An electric scooter, smart mall screen, a smart logistic robot, or even an Ai city camera, share the same simple need of staying stable, updated, and secured throughout their life in the field. The mission of updating the IoT device software is critical and sensitive: on one hand, we would like to upgrade the IoT device fleet software to the latest version which might be better in terms of stability and product features, but on the second hand, we don’t want to badly affect the device in case the update didn’t work. This is a complexity, every IoT fleet owner is experiencing and needed to be handled.
What is the right process for deploying an update on IoT devices?
There are a few important rules when deploying an update on a fleet of IoT devices that are in production. The purpose of those rules is to make sure the deployment process is being done without leaving a room for mistakes that can cause to product recall.
1. Update testing process
After creating a working, checked update that is ready to be deployed on the product fleet, it is important to make another double-check by deploying the update on a test group of devices, that includes similar devices to the devices that are in production. By deploying an update to those test devices, we can completely predict how the deployment of the update will look like on the production group of devices. The deployment on the test devices should be similar as possible to the devices that are in the field, in any perspective: internet connection type and stability, running the software version of the device before the update, and creating the same product behavior.
Even in the case of a successful update to the test devices, it’s important to create another deployment of the same update, but this time, we will interfere to the deployment process by powering off and powering on, one of the devices during the update process to test if the rollback option triggered and handle the situation as expected.
3.Scheduling the production update deployment
Unlike the test devices running in our lab, the production devices might not be ready to receive updates during the day or the night, In some cases, there might be devices that ready to receive updates and some that are not. By using an update management tool, we can let the edge device decide when is a good time for it to get the update. This way, the update process can begin on all of the production devices, while only the devices that are currently “not working” and free to receive the update, will be updated.
4.Deploy the update on the production IoT devices
No one likes to deploy an update on thousands of devices at the same moment, the risk and the damage could be tragic. This takes us to another step that can be done to reduce the risk of the deployment: creating different groups of production devices, separating them by area, product version or anything that will help us debug them in case of an issue. To minimize risks, we will. begin the update deployment on one group of production devices, then, making health checks to ensure that everything worked. From this point, we can begin the deployment on all of the other production groups we have.
What else should be done to deploy update on IoT devices safely?
Still, when it comes to software, things not always working as expected. Therefore, it is important to have the full stuck of tool to remotely maintain the IoT fleet easily, in any given situation. Here are the 3 main tool that can be valuable in a time of product software issues:
1. Monitoring tools
Using monitoring tools, can help us understand that there is an issue on a specific device and might even tell us the specific path to look on. From simple hardware resources monitoring to monitoring the product running application. anything can be valuable in a time of product issue.
2. Controlling tools
Using controlling tools, can help us debug the issue easily by accessing a device, or running commands on a device.
3. Managing tools
Viewing the whole fleet in 1 place, arranged with name, location, and live statuses, can save time of finding the device with the issue and begin debugging.
How can we implement such a complex system for our IoT products?
While developing an IoT product, the development team are mostly out of resources, working on the product software, trying to meet the project deadlines, and get ready to mass production. Building “another” whole new software for managing the IoT update process could take months of work that doesn’t part of the core bussnius of the ioT product itself.
Going with a ready-to-use IoT device management platform instead of building one
Instead of wasting valuable time on finding patches and building scripts for deploying updates, here at JFrog Connect, we provides and all-in-one platform that includes all the needed tools and features to deployed updates on IoT devices, manage software versions, manage the devices itself, and bunch of other great tools to maintain the fleet remotely to reach zero down-time, and high stability of your product.