Container technology, with its ability to package and deploy an application and its dependencies in an isolated, secure, and lightweight virtualized runtime environment, is one of the most exciting technologies of our times. It is being adopted at a rapid rate, both within web companies, as well as in enterprise IT. We now realize that this technology provides immense benefits for the internet of things (IoT) and industrial internet, as it allows us to handle some of the associated deployment, scalability, security, and operational challenges with a degree of elegance.
Architecturally, an IoT system is distributed in three tiers: namely, the edge tier, the core, and the application tier. The benefits of containers are being realized in each tier, leading to their rapid adoption. The edge tier in an IoT system consists of sensors, controllers/actuators, gateways and routers, and so on, deployed at remote sites. Typically, these devices are resource constrained embedded systems running on lightweight operating systems. The systems run services for data acquisition, data filtering, edge analytics, control logic, and so on, as well as interconnectivity with the core tier.
We are seeing the emergence of specialized container runtimes for embedded systems, as well as packaging of edge service as containers. The latter enhances their security and isolation characteristics. Services can be run with minimal privileges and independent of other services or applications. Since there are no performance overheads, it particularly suits systems with low CPU and memory resources. Moreover, these services can be deployed via cloud connected hubs/repositories or marketplaces in a scalable manner.
The core tier typically consists of data stream ingestion, filtering, transformation, stream processing, event triggered actions, business logic, and analytics workloads. Modern IoT core systems are increasingly realizing these workloads using micro-services architecture. Containers and micro-services are a marriage made in heaven. Micro-service instances are being deployed using lightweight application containers that communicate via message passing. Container orchestration tools are providing load balancing, high availability and failover as a bonus.
Most industrial internet applications not only involve integration with sensors and devices, but also need to ingest data from external files, databases, and external web services as well. We believe that traditional extract-transform-load (ETL) workloads will be common in the industrial internet and these will gradually migrate to containers.
Function-as-a-Service (FaaS) is the next big thing in cloud computing, and many FaaS platforms (if not all) are realized using container technology. Examples of such platforms include the Amazon Lambda and Apache OpenWhisk. Use of FaaS will be a common pattern in IoT applications in the days to come. An example of FaaS in industrial internet would be: cameras capturing images of an industrial product being used by an AI-based model using FaaS to detect defective products via image processing. Whenever an image is loaded into an image store (a blob store), the service would run a Lambda function to trigger the AI model.
Container-based deployments are spreading fast across all industry domains. Technology companies, ISVs, and open-source projects are rapidly coming out with support for packaging their products in the form of containerized applications. For enterprises, it is time to start due diligence studies, baseline their existing IoT architecture and applications, and come out with a strategy and roadmap for adoption of containers.