The quick evolution of smarter and cheaper hardware devices is one of the prominent enablers of the IoT revolution. Today we see that the IoT platforms are constantly restructuring to match the pace of hardware device development. A futuristic and end to end IoT platform must plan for the advancements in devices in addition to adopting the innovations in the software models.
The problem of hardware being absent in the IoT solution development cycle
One of the serious limitations that we face in IoT solution development is that the software platform development is insulated from the hardware. The workaround that we often resort to is to build simulators that incorporate specific features. The trade-off is the additional effort required to build custom simulators, their scalability and effectiveness vs the number of defects it helps in identifying. Also, since IoT is all about volumes of data generated by millions of devices, the interpolation of simulated data may not expose edge scenarios. The access to devices at the time of application design and implementation is very crucial to avoid fatal integration issues. Even during the integration phase, we depend on a lab set-up and a limited version of the device which masks the issues of device compatibility, behavior of updates etc.
To summarize, one of the biggest challenges in IoT platform development today is that the device, which is the starting point of the entire solution comes into the solution only during the final stages of solution development, resulting in higher cost, poor quality and longer time to market.
The solution, therefore, is to introduce the devices much earlier in the platform development cycle, right from the time the application design is created, so that we have enough data to build a robust platform faster.
Device virtualization to make hardware accessible throughout the IoT platform development cycle
Integrating actual devices even close to real scale is not possible, and as we have seen, simulators also have their limitations.
The concept of device virtualization provides a feasible and effective solution by making virtual copies of the physical devices available. These copies emulate the IO operations of the physical devices and provide the flexibility to configure them for different sets of conditions.
The availability of device replicas can greatly enhance the solution development at different levels –
- Prototyping – Most of the times, hardware development happens in parallel with the application development. The device features also evolve, and the hardware may not be available even during integration testing. In such scenarios, device replicas can be used to mimic the new device features and provide feedback for the hardware development, thus speeding up the device prototyping.
- Platform Engineering – The platform architecture must consider many factors like region specific compliance, privacy, device security, integration with on premise applications etc. Virtual devices can be used to program such compliance requirements and understand the application behavior for this specific compliance.
- Device compatibility – IoT applications must be backward compatible. The platform must handle older versions of the device, current ones and the next versions that are being developed. This can be achieved by creating virtual devices of each generation and getting data from all of them in a manner like the real-world interactions.
- Feature validation – Device virtualization can accelerate feature validation and enhance the quality of the tests. In specific Industrial IoT scenarios, using virtual devices to replicate both the end nodes as well as the gateways will help in achieving better coverage.
- Performance testing – Virtual devices can help in extensive performance testing for scalability, security, resource utilization and other parameters.
- Training – This is a very distinctive advantage that virtual devices can provide. The end users, especially for domain specific industrial IoT solutions are frontline technicians who are used to the legacy system and might find the switch to smarter systems challenging. Using virtual devices, the field personnel can be trained effectively on configuring the devices, viewing the data and basic troubleshooting etc.
Device virtualization itself can happen at the level where the IO from the device is replicated or the device and its firmware is replicated. The latter tends more towards a digital twin of the device, while the IO replication alone can be efficient to enable smoother platform engineering. We should be able to create any number of copies of a device that will take inputs in the formats that the actual devices do and send out data over common protocols that the device is capable of. Virtualization should also provide the capability to receive commands. This will help in analyzing the device response to various triggers and forced commands that the application might send.
The concept of device virtualization, when integrated into the platform engineering process can help us deliver better quality IoT solutions faster.