In the world of the Internet of Things (IoT), as software simplifies our lives, it in turn becomes considerably more complex. This article outlines how vehicle manufacturers should prepare for IoT software development and delivery.
Picture the scene
Your car recognises you as you climb in. It also knows that today is Friday and that it is 6pm. After consulting with your smartphone calendar, the car knows that on Fridays you always go swimming at Hotel Nikko in downtown San Francisco. It then checks the real-time traffic information and automatically recommends the best route to the hotel.
After swimming, you are about to head home. But the smart refrigerator at home has notified your cellphone to stop and pick up some groceries for dinner. Your car routes you to your favourite local store, which it knows has the products in stock.
The next day, you’re driving to LA, when the car notifies you that the fuel pump is developing a fault and asks you to visit a dealer along the way that is open on Saturday. Prior to making that recommendation the car has already checked that the dealer has the part, and schedules the appointment. After a quick service, you’re back on the road heading for a relaxing weekend in LA.
This scenario is no longer science fiction, and the technology is already here.
What happens under the hood (literally)
To support these advancements, car manufacturers have three software teams:
- A team focusing on developing the software embedded in the car: this software is responsible for interaction with the driver, providing health data, phone connectivity, etc.
- A team focusing on Big Data: the software that aggregates and analyzes data in real-time from the millions of cars on the road, and all third-party connected services. This software component is the one that receives the SOS signal from the car about the impending fuel pump failure, finds and directs the car to the dealer.
- The third team focuses on building the mobile app for seamless integration with the car’s infotainment system.
What’s required to manage IoT software complexity?
Coordinating the three software teams will be a challenge without the proper DevOps platform, because any software upgrade must be coordinated in such a way that it will not break the functionality between the different software components, installed on different devices. Such a complex software design, with such high stakes (from missed appointments, to driver safety) requires shared visibility, shared reporting and an integrated dashboard for centrally managing the software delivery. This allows the project Team Leaders to see the progress of any change requests or software updates on three different software tracks, and ensure each software release goes smoothly, with no quality issues or possible integration failures that could disrupt the service.
The three software teams will need a single integrated DevOps platform that can handle three different deployment targets, each with its own specific deployment process, stack, etc:
- The embedded software in the car itself – where software upgrades are usually deployed Over-the-Air (OTA);
- The data centre for the Big Data storage and computation – where software updates are done via the Internet;
- The mobile app – which is upgraded via the app store mechanism.
In addition to the standard Continuous Delivery and DevOps platform requirements, there are other important requirements for a multi-target solution for IoT companies to accelerate software delivery securely and reliably, while improving the quality of service:
- Handle different deployment paths (e.g. embedded device via OTA update, data centre via Internet, and mobile app via app store) from a single integrated solution;
- Enable teams to own the pieces of orchestration pertaining to their applications while enforcing a separation of duties;
- Orchestrate the delivery pipelines for each team and manage the dependencies between these pipelines;
- Provide an artifact repository to store and trace the life of each artifact;
- Provide centralised dashboards and processes to facilitate the monitoring and management of delivery pipelines and releases;
- Enable zero downtime upgrades and automatic rollbacks for full-stack or partial IoT service updates;
- Provide complete traceability with automated compliance reports that are available on-demand.
Through a single, integrated, DevOps platform, the project team leaders can have a single dashboard to track progress on each software team, and the variability management of artifacts from three project teams can be centralised to accelerate deployment and to eliminate mistakes.
Furthermore, with the Smart Deploy feature, the integrated DevOps platform has control over the upgrade processes to three different environments, thereby simplifying dependency detection and reducing the risk of undetected bugs.
Getting IoT Right
The IoT trend brings rise to a plethora of new and useful services that enrich our lives, simplify it, or save us time and money. To provide these kinds of connected – and complex – services, software companies must have three different software teams (at least!) and they have to deliver the various, integrated service components across different platforms and devices. In addition, software upgrades must be coordinated across all environments to ensure service continuity. Only an integrated DevOps platform can provide the traceability, visibility, shared control, and the ability to react quickly – for these complex software development, test, and deployment processes.
About the author: Andreas Dharmawan is VP of Technical Field Operation at Electric Cloud