Beginning with limited and centralized resources and evolving into a distributed approach is a pattern often seen in technology cycles. This is also the case for the execution of workloads. While cloud computing transformed the way digital services are delivered and consumed, edge computing is becoming more and more important as it enables the use of increasing computing power at the edge by transferring loads and tasks from cloud servers to any type of computing resource between data source and cloud.
Edge Computing not only allows to better allocate the available resources. Being closer to the location where data is created also addresses real-time concerns resulting from time sensitive applications like the control of an electric engine. By processing and filtering the data at the edge only a fraction of the generated data gets uploaded to the cloud minimizing the data being exposed to third parties and resulting in lower vulnerability.
This, however, introduces a new set of challenges around the question of how to orchestrate workloads being deployed on the edge while ensuring secure operations. Cumulocity IoT addresses this exact question by providing a rich set of capabilities covering the entire software life cycle:
Another important factor that needs to be considered when it comes to edge computing is the capability of managing software at scale. When moving from one single centralized system to a distributed architecture, one has to ensure that the software running on each of the nodes is up-to-date and running. Cumulocity IoT not only allow to efficiently manage software on single devices, but also provides mechanisms like Bulk Operations to do this at scale with thousands of different services running on millions of devices:
Before performing over-the-air (mass) roll-outs or updates, the required components have first to be provisioned so they can be referenced during the deployment. With thousands of different components in multiple versions, maintaining all of them and referencing the right ones can become quite complex.
Cumulocity IoT provides multiple repositories to store and manage all the reference components and artifacts that are needed for the operation of your device fleet. This also includes version and patch management to easily allocate the newest version of your firm- or software. Define a device type to ensure that your new software will only be deployed to supported devices. You can also tag your software with a specific software type to easily differentiate between different kind of components like ML models, EPL apps or docker container. Easily add a new component to your repository by either uploading it or referencing a URL to an external source.
The operation of a device usually requires a set of multiple different components, that might vary e.g. to meet regulations specific to the country the device is located in. Ensuring that the right components are covered and in their newest available version when setting up the device can be a time-consuming task.
Cumulocity IoT allows you to define a reference set, containing all different components like firmware, software packages and configuration files within a device profile. This can then be rolled out to all applicable devices, allowing you not only to set-up multiple devices in on go but also to ensure consistency across your device fleet as all devices are provided with the same components in the same version.
Bulk operations can be leveraged to apply the reference components that have been added to the repositories to any set of devices. Cumulocity IoT’s UI will guide you through multiple steps in which you can select the component(s) you want to apply, the devices you want to target as well as the time the rollout will be scheduled for:
In some cases, it is necessary to dive into the details of individual devices to investigate and troubleshoot in case of an error or unexpected behavior, add or update software on a single device level or maybe just check if all required software packages are installed and running. To do this, two dedicated tabs are provided for each device that supports the capability on device side.
The software tab lists all installed software packages including their version and type and allows to update or delete them:
The services tab allows to monitor the status of the software running on the selected device. You can also define your own custom status. To investigate a specific service, a details tab is available that visualizes metrics that needs to be defined and reported by the service itself, like CPU load or RAM consumption of the container the software is running in.