Strategies for IoT Software Development and Delivery
Strategies for IoT Software Development and Delivery
Creating the right development team is crucial to success with the Internet of Things. Electric Cloud's Andreas Dharmawan suggests a three-pronged approach.
Join the DZone community and get the full member experience.Join For Free
Imagine the Following Scenario:
Your car recognizes you as you enter the car. It also knows that it’s 6 p.m. on a Friday. 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. When you are about to head home from swimming, your smart refrigerator notifies your phone to stop and pick up some milk because you’ve run out, so your car routes you to your favorite local store.
The next day, you’re driving to Los Angeles when the car notifies you that the fuel pump is about to go bad. It recommends you to a dealership along your route that it specifies is open on Saturdays. Prior to making the recommendation, the car has already checked that the dealership is open, has the part, and that they can schedule your appointment. After a quick service, you’re back on the road and heading for a relaxing weekend in LA.
This scenario is no longer science fiction, and the technology is already here.
To support these advancements, the car manufacturer has three software teams:
- The first team focuses on developing the software that’s embedded in the car: this software is responsible for the interacting with the driver and providing health data, phone connectivity, etc. This team works predominantly with Real-Time Operating Systems (RTOS) and works collaboratively with the mechatronics (mechanical and electronics) team. The most common programming language for this team is C/C++ and software upgrades are usually deployed Over-the-Air (OTA).
- The second team focuses on Big Data applications: the software that aggregates and analyzes data in real time from 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 the dealer, and directs the car to the shop. This team is tasked with processing massive amounts of real-time data and is mostly concerned with horizontal scalability, which enables them to support data throughput as more devices are sold.
- The third team focuses on building the mobile app: this application is used for seamless integration with the car’s infotainment system. Mobile developers often prefer to use Software-as-a-Service (SaaS) tools for the creation of the app. The mobile apps are updated at a high frequency.
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 doesn’t break the functionality between the different software components installed on different devices. A complex software design with such high stakes requires shared visibility, shared reporting, and an integrated dashboard for central management of the software delivery process. This allows project team leaders to see the progress of any change requests or updates on three different software tracks; it also helps ensure that each software release is going smoothly with no quality assurance issues or possible integration failures that could disrupt 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, and more. It needs to handle the following:
- The embedded software in the car itself, where software upgrades are usually deployed OTA.
- The data center for Big Data storage and computation, where software updates are done via the Internet.
- The mobile app, which is upgraded via the AppStore.
The three software teams that are part of the development of an IoT product and services have distinct characteristics. They each use different technologies, stacks, deployment patterns, and delivery practices in their work. Their day-to-day tasks and workflows are different, and so friction exists by nature when the three teams must coordinate their integration and system tests. If the possible failure points are not minimized among the three different processes, then delays will inevitably happen; if delayed, the product’s quality and market share can suffer.
In addition to common Agile development practices and Continuous Delivery/DevOps platform requirements, there are unique requirements from a tooling perspective to enable efficient and streamlined IoT application delivery. A single platform is needed that can address the three different domains as well as integrate and orchestrate the work transitions and handoffs between teams throughout the product’s lifecycle. In addition, the platform must be able to track artifacts, the processing outcomes, and who works on different stages. Here are some additional requirements for a multi-target IoT solution that accelerates software delivery securely and reliably while also improving the quality of service:
- Handle different deployment paths (e.g. an embedded device via OTA updates, a data center via the internet, and a mobile app via the app store) from a single integrated solution.
- Enable teams to own the pieces of orchestration pertaining to their applications while also 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 team progress and variability management of artifacts from three project teams.
Getting IoT Right
The Internet of Things 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 connected and complex services, software companies must have at least three different software teams in order to deliver 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 ability to react quickly for these complex software development, testing, and deployment processes.
For more insights on IoT security, protocols, and standards, get your copy of the Guide to the Internet of Things – 2015 Edition now!
Opinions expressed by DZone contributors are their own.