Should You Use Serverless Architecture for Your IoT Solution?
DataArtDataArt
We are living in the age of unprecedented industry disruption caused by a rapid speed of technological development, particularly in the area of the Internet of Things (IoT).
IoT helps to transform industries into a data-driven paradigm, opening up vast opportunities. Fast IoT adoption is supported by companies which are transforming their business through technological innovation; manufacturers are providing low-cost and high-end devices and IoT platforms enabling device integration and management.
There are a lot of IoT tools and frameworks on the market with different pros and cons, and it's a difficult choice to make. We believe that digital IoT adoption should turn towards flexible, reliable and cost-efficient platforms with minimal investment into infrastructure, software, knowledge and employees.
To prove this concept, we decided to find out how to build an IoT solution from scratch with zero infrastructure and maintenance costs and little-to-no operating expense.
This approach perfectly aligns with the cloud concepts such as pay-for-what-you-use, pay-as-you-go, and Platform-as-a-Service (PaaS), Software-as-a-Service (SaaS), and serverless approaches.
To implement the concept, we employed Amazon Web Services (AWS) cloud capabilities. Our project was to create device simulators reporting telemetry in real time and to have this information accessible in real time through the API.
We considered the AWS IoT platform as a powerful IoT framework. It supports MQTT — one of the most widely-used communication protocols. Our choice of supporting services to persist and process data was also based on its pricing and maintenance costs.
After researching a few different approaches to architecture and a variety of services, we finally came up with the following list of components:
The overall data flow for our concept project worked in the following way:
*Point #2 may look a bit silly at first sight, as you could argue that DynamoDB is not the best choice to store raw time-series data. However, it does a great job for the demo purposes with a small number of devices.
We also considered using Firehose as a delivery stream from IoT to S3/Reshift and EMR cluster for data processing, but it would be an overkill for this micro-project.
We set the following key parameters for the architecture:
Let’s say your backend operations are only required to process several requests a minute — this means that most of the time your CPU is idle. We assume that you don't want to pay for the idle time. So here comes serverless architecture to ensure you do not.
Let’s say you have 10,000 devices reporting small volumes of data every 15 minutes and this results in approximately 29.2 million requests monthly over 730 average hours a month.
AWS IoT costs $5 per 1M requests, and DynamoDB costs $0.0065 for every ten put requests per second and the same cost for every 50 get requests per second.
We get a monthly bill at around $146 just to receive the data through AWS IoT, and $14 to store it in DynamoDB with the smallest read capacity. We have $160 in total which is equivalent to $0.02 per device on a monthly basis or $0.000005 per request. Although this doesn't take into account the usage of lambda, storage, and API gateway, they will actually be just a fraction of these numbers, so we can leave them out.
It's impressive to get an IoT solution with thousands of connected devices which will cost you less than two hundred dollars per month. However, let’s imagine a business where devices are reporting critical data each second (rather than every 15 minutes), and you have thousands of them. How much will you pay for serverless operations?
I will save you some time and just provide the results for 10k devices sending one message a second — the monthly payment will be more than $136k and for 100k devices — $1,36M. The monthly cost per device increases to $13.61.
Would you still consider building your IoT solution serverless? The answer is — it depends!
All these figures mean that optimising your request rate will immediately and almost linearly lead to reducing your monthly bill.
This brings us to the second important conclusion we must consider — the total cost of ownership. There is a virtual threshold beyond which the serverless approach becomes very expensive and may not be effective.
For instance, the traditional architecture implementation cost may not depend so significantly on the number of devices or the number of requests per second, but rather the trade off in additional operational expenses. The cost can also be reduced by using open source solutions.
Doubtlessly, the serverless architecture has many advantages:
The first factor to consider is choosing the right approach for the requirements of your project. The serverless approach will be most appropriate if you aren't concerned about the cloud lock-in and:
On the other hand, you may consider custom or open source IoT solutions if you are building a cloud-agnostic and highly customizable solution and operating with real-time data.
Written by Igor Ilunin, Head of IoT at DataArt.
The Most Comprehensive IoT Newsletter for Enterprises
Showcasing the highest-quality content, resources, news, and insights from the world of the Internet of Things. Subscribe to remain informed and up-to-date.
New Podcast Episode
Recent Articles