As Internet of Things (IoT) gains traction among businesses of all sizes, developers are forced to figure out out how to build apps that take advantage of data. The usual approach of deploying the apps on virtual machines or containers may be suboptimal as the IoT devices may not generate data at all times justifying running compute resources 24/7 near these devices. Serverless computing could come handy for such situations. With FaaS, users pay for resources only when the compute is used and it will prove to be more cost efficient in IoT use cases.
Using Serverless for IoT workloads requires some understanding of what is available in the market and the workloads needs. There are two approaches to Serverless for such workloads: One is to push data to the cloud and other is to bring compute to edge or closer to the devices. Both approaches are available from different vendors but how the IoT data is processed to meet your business needs determines the right approach to handling the IoT data with Serverless. If the data requires real time processing, it is better to process the data at the edge/IoT location as it cuts down on latency and bandwidth costs. However, storing the processed data at the edge has a higher overhead than storing it on cloud. If the data can be disposed off after the real time processing, using the Function execution engine at the edge or near the IoT device makes complete sense. If your application processes data from across multiple sources and requires storing the data for analysis of historical data, pushing the data to the centralized cloud location makes more sense.
- AWS Lambda, Zoho Catalyst, Azure Functions, etc. are useful for processing the data in the centralized cloud. Zoho Catalyst, for example, offers machine learning and AI services as a part of their service which could come handy in processing the data from IoT and Edge locations
- Edjx takes the approach of moving compute closer to the edge. They are trying to provide the same user experience of FaaS offerings from cloud on edge devices. You could also deploy Azure Functions as IoT edge modules to take computing closer to the data than pushing the data to the centralized cloud
Depending on the needs of your organization, either one of the two approaches mentioned above can come handy for your IoT workloads. Except in the certain scenarios where running virtual machines or containers on the cloud may make sense, Serverless Computing is well suited for building apps to process data coming from IoT and Edge.
Considerations for IoT with Serverless
- Are you processing the data in real time? If so, bringing compute closer to data makes more sense than pushing data to a centralized cloud service
- Does network latency impact the end user experience? Then, it makes sense to process the data at the edge
- Does your app process data from multiple sources? In many instances, it may make sense to use centralized cloud depending on the data sources
- Does historical data play a significant role in your ML models or analytics? Then, using the centralized cloud makes more sense as the cost of storing data could be cheaper in cloud
- Are you using the data from business applications along with data coming from IoT devices? It will make more sense to use the cloud service for such use cases