Cars are now some of the largest and most expensive mobile computers on the planet, each being manufactured with several hundred millions of lines of code integrated into their systems. The code within these machines can do everything from connecting to our smartphones’ infotainment systems to analyzing the proximity of other cars on the road. Yet while IoT software simplifies our lives — from recording our steps and heart rate on the cloud to remotely changing our thermostat’s temperatures — developing IoT software is a lot more complex than traditional software development.
Imagine the following scenario: Your car recognizes you as you enter the car, and after consulting with your smartphone calendar, it knows you’re off to your weekly poker night with your friends downtown. It checks the real-time traffic information and recommends the fastest route to your destination. After you lose at poker (again), you’re heading home. Your smart refrigerator at home has already notified your smartphone that you need to pick up milk and other groceries on your way home, and your car routes you to your favorite local store. The next day, you’re driving to a meeting when the car notifies you that the oil pump is about to go bad and suggests that you to visit a dealer along the way — one that it knows is open at this specific time. Prior to making that recommendation, the car has already checked that the dealer has the part and scheduled the appointment for you. After a quick service, you’re back on the road.
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. This is 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 component is the one that receives the S.O.S. signal from your car about the impeding fuel pump failure, finds the dealer and directs the car to the shop.
- A team focusing on building the mobile app for seamless integration with the car’s infotainment system.
Requirements for managing IoT software complexity
Coordinating these three software teams is a challenge without the proper DevOps platform. 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 ensures that 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 over 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 additional important requirements for a multi-target solution for IoT companies to accelerate software delivery securely and reliably, while improving the quality of service:
- The ability to 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.
- The ability to enable teams to own the pieces of orchestration pertaining to their applications while enforcing a separation of duties.
- The ability to orchestrate the delivery pipelines for each team and manage the dependencies between these pipelines.
- The ability to provide an artifact repository to store and trace the life of each artifact.
- The ability to provide centralized dashboards and processes to facilitate the monitoring and management of delivery pipelines and releases.
- The ability to enable zero downtime upgrades and automatic rollbacks for full-stack or partial IoT service updates.
- The ability to 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
IoT has ushered in 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 at least three different software teams, 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.
All IoT Agenda network contributors are responsible for the content and accuracy of their posts. Opinions are of the writers and do not necessarily convey the thoughts of IoT Agenda.