Developing applications and devices for the Internet of Things (IoT) poses unique challenges. Because IoT systems may be expected to perform for many years, developers must plan for their entire lifecycle, from design through end-of-life. This paper explores the challenges that arise at each stage of the lifecycle and how to address them, and outlines the advantages of having an integrated, cloud-based development environment for building, testing, deploying, and managing IoT applications.
Anticipating The Future
Industrial and manufacturing enterprises have recognized the value of IoT. With the ability to unlock machine data, they can optimize their businesses by increasing efficiency, reducing operating expenses, and accelerating innovation to generate new revenue streams.
Demand for IoT solutions puts pressure on developers to deliver applications quickly without compromising security and performance. But developing for IoT poses different challenges from developing for traditional software and system development. Enterprise customers will expect their IoT systems to perform for many years, during which they will require regular attention and frequent upgrading to take advantage of advances in technology. That means developers must anticipate what systems will require in the future and plan for the whole lifecycle of devices and applications at the design stage, from development, configuration, and deployment through provisioning, management, monitoring, and, ultimately, decommissioning.
Managing the IoT lifecycle presents a high level of complexity. IoT systems often entail connecting existing “brownfield” devices that were not designed for connectivity. Developers must also ensure that the connection is secure, which requires implementing protective measures at all levels—device, network, and cloud. Once devices are securely connected, operators need a way to provision them, which today often means literally going from device to device with a thumb drive and loading applications or performing upgrades manually. Finally, IoT systems face the challenge of integrating with enterprise systems that can aggregate, analyze, and act upon the data collected from devices, bridging operational technology (OT) and information technology (IT) systems that have historically been separated by air gaps.
To bring greater simplicity and efficiency to this process, developers and system operators need the means to configure, provision, and manage field devices remotely. Many organizations today have, at most, the means to connect devices and collect data via gateways, but lack the ability to “push” control instructions back to devices. With hundreds or even thousands of devices on a single IoT network, the cost of lifecycle management and the risk of failure can be extremely high.
Mastering The Lifecycle Challenge
How can developers streamline and accelerate the development process, ensure application performance before deployment, and then efficiently deploy, manage, and monitor applications in the field remotely? To better understand the capabilities needed to address these challenges, it’s instructive to walk through the entire device lifecycle.
Design and Development
The new challenges arising from IoT call for new, more flexible development methods that enable developers to build applications efficiently and deploy them to multiple devices. In the absence of a single standard of device connectivity, ease of integration with a variety of platforms is a necessity. A pre-configured development platform, optimized for IoT, that does not require the use of actual devices can dramatically accelerate development and enhance efficiency, reducing the risk of errors and delays.
Increasingly, software development is distributed among teams, often working in different locations. With a cloud-based development platform that allows anytime, anywhere access, distributed development teams can collaborate more effectively and further speed the process.
Security is a paramount concern in IoT development. An end-to-end security strategy must be factored in across the application lifecycle at the design stage. Building in security functionality adds a layer of complexity that can be a drag on development and interfere with the eventual performance of the application. Developers can mitigate this, however, by building on a platform using pre-configured, integrated software components in which many security issues have already been addressed. This reduces complexity, saves time, and lowers the risk of security gaps due to misconfiguration.
Testing and Debugging
Knowing that industrial and enterprise IoT applications involve many moving parts and have high performance expectations, developers need a way to test applications at scale prior to deployment. An effective way to achieve this is through simulation technology and hardware virtualization that make possible full system replication and modeling without the need for actual hardware. System simulation is a useful tool for anticipating and planning for risk scenarios that may occur at different points in the system lifecycle. Debugging is also easier and more efficient in a virtual environment that does not require re-running the software to find breakpoints.
Deployment
Once an application has been tested, developers need the means to deploy it easily to hundreds or thousands of devices in the field. This can be accomplished with a development platform that includes built-in capabilities for the remote commissioning, provisioning, and customization of devices with new applications.
Management
The most critical driver of value in an IoT system is the ability to unlock and extract data from devices, aggregate it, share it with business logic IT systems, analyze it, and make decisions based on that analysis. Often those decisions can be automated and executed by pushing data back to devices to modify their operations, completing a “round-trip” communication from the edge to the enterprise and back. An end-to-end IoT development environment should include a management component that makes this easy and seamless. System operators should also be able to monitor the health and performance of devices remotely, check for security vulnerabilities, and perform upgrades regularly.
Decommissioning
Developers need to plan for the device’s end-of-life at the design stage. Operators need to be able to securely remove a device from service, ensuring that it is truly “dead” and does not expose a vulnerability that intruders could exploit.
Simplifying IoT Development
In order to overcome the complexity of IoT development, it’s important to think of the system lifecycle not as a sequence of discrete steps, but in a holistic fashion. The key capabilities for managing the system lifecycle, therefore, need to be integrated. These capabilities would include tools for:
- Remote device management: Sending out engineers in “truck rolls” to maintain and upgrade devices in the field is simply not viable in large-scale IoT deployments. System operators need to be able to manage devices from a central location in a closed-loop system from provisioning to end-of-life.
- Virtualized application development: Developers need the ability to customize and reconfigure deployed devices with new applications, using an abstracted target hardware platform that does not require proximity to an actual device.
- Modeling and testing: Development teams need the means to test applications at scale and debug prior to deployment, using simulation models capable of replicating the entire system across its entire lifecycle.
Finally, to enable distributed development teams to collaborate efficiently and effectively, it makes sense to house these tools in a secure cloud environment, whether on an internal server or through an external provider, that allows anywhere, anytime access to authorized developers.
Closing The “Skills Gap”
A recent worldwide survey of developers found that, while a large majority expressed excitement about the opportunities created by IoT, around half are uncertain they have the skills and tools necessary to deliver on expectations.
Tapping into the company’s deep experience in software and technologies for building intelligent, connected devices, Wind River® has launched a new set of products that greatly reduces the traditional complexities of building embedded devices and systems for IoT.
The Wind River Helix™ Cloud suite provides anytime, anywhere access to tools, labs, and management platforms to simplify, streamline, and automate how organizations create and run IoT systems. Helix Cloud helps teams build IoT systems more quickly and manage the device lifecycle more effectively.
It includes the following products:
Wind River Helix App Cloud is a cloud-based software development environment that makes it possible to easily build applications independent of device operating system and hardware complexity. It enables software engineers and system operators to quickly update and customize deployed devices to meet current business needs without having expertise in embedded systems.
Wind River Helix Lab Cloud virtualizes hardware systems and real-world environments to bring new possibilities to how organizations can design, build, test, and manage complex and large-scale IoT systems. Lab Cloud allows embedded development organizations to work faster and collaborate more easily, helping support agile and continuous development methods for IoT projects.
Wind River Helix Device Cloud enables organizations to unlock machine data securely and efficiently and connect it with their IT systems and analytics environments. Operators can more easily collect, manage, and integrate data from disparate devices, machines, and systems. Device Cloud streamlines the management of hundreds or thousands of IoT devices for provisioning, configuring, and monitoring.
Wind River Rocket™ is our best-in-class, scalable real-time operating system for 32-bit microcontrollers (MCUs), ideal for building sensors, wearables, industrial controllers, wireless gateways, and other resource-constrained smart, connected devices. Rocket is part of App Cloud, giving developers all the tools and technologies they need to start building IoT applications in minutes.
Conclusion
IoT holds substantial promise for enterprises to optimize their businesses, drive productivity, create new revenue streams, and innovate. This is a big opportunity for developers, but developing for IoT presents complex challenges, chief among them the need to manage devices and applications throughout their lifecycle.
Success will go to developers who can meet the demand for high-performance IoT applications and master the challenges of ongoing lifecycle management. They can achieve this through the integration of application development, testing, deployment, and management, in a centralized environment that leverages the cloud to control costs and enhance collaboration. Fortunately, the technology that makes this possible is already in place.