In the world of IoT, as software simplifies our lives, it in turn becomes a lot more complex. Imagine the following scenario: Your car recognizes you as you enter the car. It also knows that today is Friday and that it is 6 pm. After consulting with your iPhone 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 iPhone to stop and pick up some groceries for dinner. Your car routes you to your favorite local store. The next day, you’re driving to LA, when the car notifies you that the fuel pump is about to go bad 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, the car manufacturer has three software teams:
- A team focusing on developing the software that’s embedded in the car: this software is responsible for the 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 3rd -party connected services. This software component is the one that receives the SOS signal from the car about the impeding fuel pump failure, finds the dealer, and directs the car to the shop.
- The third team is focusing on building the mobile app for seamless integration with the car’s infotainment system.
What do you need in order 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 is going 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
- The data center for the big-data storage and computation - where software updates are done via the internet
- The mobile app – which is upgraded via the AppStore mechanism.
IoT software complexity In addition to the standard Continuous Delivery and DevOps platform requirements, here are additional 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 over the air update, data center 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 centralized 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 centralized 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 – 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 kind of connected – and complex - services, software companies must have three different software teams (at least!) and they have to deliver the different, 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.
This article also appeared on Automotive World.