Serverless架构会是IOT的最佳解决方案吗?
原文:Should You Use Serverless Architecture for Your IoT Solution?
作者: Guest Writer
翻译:无阻我飞扬
摘要:摘要:文章以构建一个IoT解决方案为例,详细介绍了Serverless架构在物联网领域的应用优势。以下是译文。
我们通过从头开始构建一个物联网解决方案的试验,有如下发现。
我们生活在科技飞速发展而造成的前所未有的产业破坏时代,特别是在物联网领域。物联网有助于产业转型为数据驱动的模式,拓展出更多的机遇。物联网技术的快速采用,来自于那些通过技术创新改变业务的公司的支持;制造商正在提供低成本高端设备,使得物联网平台的设备集成和管理成为可能。
市场上有大量工具和框架,它们有着不同的利弊,很难做出选择。数字互联网的采用应该转向灵活的、可靠的和成本效益高的平台,最低限度的投入基础设施、软件、知识和雇工。
试验
为了证明这一理念,我们决定找出如何从头开始构建一个零基础设施和维护成本,几乎没有任何运营费用的物联网解决方案。
这种方式完全符合云计算的概念,用多少付多少,量入为出,平台即服务(PaaS),软件即服务(SaaS)和Serverless方式。
安装
为了实现这一理念,我们采用了亚马逊web服务(AWS)的云功能。我们的项目是创建实时报告遥测的设备模拟器,并通过API实时获取这些信息。
AWS的物联网平台作为一个强大的物联网框架,它支持MQTT—一种应用最为广泛的通信协议。我们选择存留和处理数据的支持服务也是基于平台的价格和维护成本。
在研究了几种不同的体系结构方法和各种服务之后,我们最终提出以下组件列表:
AWS物联网的数据介质和设备管理,
DynamoDB—保留数据可读的文件存储,
AWS Lambda—无服务器的数据处理,
S3—用于静态网站托管的块存储,
网关API—REST访问数据。
数据流图
试验项目的全部的数据流以以下方式工作:
- 设备发送少量数据给AWS物联网平台(每5秒1次)
- AWS物联网平台存储数据到DynamoDB表中
- Lambda函数每分钟和每小时触发一次去做数据分析和存储结果反馈到DynamoDB
- API网关展示了数据通过REST API从DynamoDB到外界
- 静态HTML网站托管在S3上,它通过RESTAPI展示实时数据图表和分析。
乍一看第二条,可能有点傻,你可以辩称,DynamoDB并不是存储原始时间序列数据的最佳选择。然而,它做了一个伟大的工作,通过少量的设备达到了演示目的。
我们也考虑过用Firehose作为一个传递流,用于从物联网到S3/Reshift以及EMR集群的数据处理,但是对这个小项目来说,必将有点杀鸡用了宰牛刀的感觉。
为架构设置以下关键参数:
- 如果你没有免费的报告数据的设备。你可以免费得到少量的设备,这也是亚马逊免费的项目。
- 开箱后的高可扩展和高可用性,取决于每个选定组件的本质。
- 开始只需要最少的知识。你可以编写代码,只需要用某一个非常流行的语言定义规则和编写逻辑,比如JavaScript,Python或者java.
分析/计算
后台的操作仅仅需要每分钟处理几个请求—这意味着大部分时间CPU都是空闲的。如果你不想为CPU空闲时间付费,那么Serverless架构就很适合你。
假设有10000台设备,每十五分钟报告一次小容量的数据,那么每个月大约会有2920万个请求,每个月平均超过730小时。
AWS物联网平台每1M请求的成本是5美元,DynamoDB每秒10个提出请求的成本是0.0065美元,花费等同于每秒50个得到请求。
仅仅是通过AWS物联网接受数据,每个月的账单在146美元左右,将数据以最小的阅读能力存放在DynamoDB是14美元。总费用是160美元,每月每台设备0.02美元,等价于每个请求0.000005美元。账单没有考虑lambda,存储,API网关,因为这些实际上只是总费用的一小部分,所以可以忽略不计。
令人印象深刻的是一个有着成千上万连接设备的物联网方案,每个月花费不到二百美元。然而,想象一下每个业务,设备每秒都在报告关键数据,有成千上万个这样的设备,你要为Serverless的操作付出多少钱?
这会节省你的时间,10K个设备每秒发送一个消息,结果将是—每个月支付超过136000美元,如果是100K个设备—相应的支出将超过1360000美元,每个月每个设备将增加到13.61美元。你还会考虑组建自己的Serverless的物联网解决方案吗?答案是—视情况而定!
利弊考量
所有这些数字意味着优化你的请求率将立即并且几乎是线性地导致你每个月账单的减少。
这就引出了我们第二个重要的结论,我们必须考虑—总拥有成本。组建Serverless架构有一个虚拟的门槛,超出了Serverless方法之外,它变得非常昂贵,可能也起不到作用。
例如,传统的架构实现成本可能不依赖于设备数量或者每秒的请求数,但是这么做的代价是有额外的运营费用。成本也可以通过使用开源的解决方案来降低。
毫无疑问,Serverless架构有很多优点:
- 它把资本支出转变为运营支出,总体上降低了运营成本;
- 不需要去考虑系统内部的管理流程;
- 它减少了开发和部署成本,也减少了时间周期(更快的投入市场);
- 它是可扩展的,也有容错设计。
要考虑的首要因素是为你的项目需求选择正确的方式。如果你不担心云锁定,Serverless方式将是最合适的:
- 你经营一家初创企业,需要尽快验证你的想法,或者你短期内需要投入市场。
- 你的解决方案不需要频繁地从设备传输数据到云,因此,可以保持每台设备的成本控制在一个相对较低的水平。
另一方面,如果你正在建设一个不可知的云和一个高度可定制的解决方案去运行实时数据,可以考虑定制或者开源的物联网解决方案。
你可以在这里下载白皮书。
最初发表在iotforall.com