Serverless 架构在 IoT 领域的应用

news/2024/5/20 8:40:48 标签: IoT, Serverless

原文:Should You Use Serverless Architecture for Your IoT Solution?
翻译:安翔
审校:苏宓


我们通过从零开始构建一个IoT解决方案的实验,发现了一些有价值的信息,分享如下。

当前我们生活在一个前所未有的行业中断的时代,这主要由技术的高速发展造成,特别是物联网(IoT)领域。

物联网有助于将传统行业转变为一个数据驱动的模型,同时它带来了巨大的新机遇。企业通过技术创新转变业务模式从而提供快速的IoT适应性;制造商提供成本低廉但是品质高端的物联网设备和平台,以实现设备的集成和管理。

目前市面上有很多各具优缺点的工具和框架,从中做出正确的选择不太容易。我们认为,数字物联网的应用应当朝着灵活、可靠和具有成本优势的平台方向发展,对基础设施、软件、知识和员工的投入应当尽量减少。

Serverless 架构试验

为了证明这一概念,我们决定从零开始构建一个IoT解决方案,使用近乎为零的基础设施和维护成本以及很少的操作费用。

这种构想与一些云端服务的功能不谋而合,比如即付即用、平台即服务(PaaS)、软件即服务(SaaS) 、以及serverless。

设置

我们采用 Amazon Web Services(AWS)云服务来实现这一概念。我们的项目创建设备模拟器并实时报告遥测信息,并可以通过 API 实时访问这些信息。

AWS IoT 平台是一个功能强大的 IoT 框架。它支持 MQTT - 使用最广泛的通信协议之一。此外,我们还考虑了价格和维护成本,最终才选择 AWS 服务用以对数据的持久化和处理。

通过研究多个不同的架构方法和各种服务,我们发现 AWS 包含如下组件:

  • AWS IoT - 用于数据摄取和设备管理
  • DynamoDB - 提供文件存储和持续数据读取
  • AWS Lambda - serverless 数据处理
  • S3 - 用作静态网站托管的块存储
  • 网关 API - 提供 REST 方式数据访问接口


数据流向图

我们的试验项目的总体数据流程如下:

  1. 设备向 AWS IoT 发送少量数据(5秒发送一次)
  2. AWS IoT 将数据存储在 DynamoDB 表中
  3. Lambda 函数每分钟触发一次进行数据分析并将结果存回 DynamoDB
  4. API 网关通过 REST API 将数据从 DynamoDB 公开出来
  5. 静态 HTML 网站托管在 S3 上,通过 REST API 来显示实时数据图表和分析结果

第2点可能看起来有点傻,因为你可以认为 DynamoDB 不是存储原始时间序列数据的最佳选择。然而,它非常适合用于少量设备的演示。

我们还考虑使用 Firehose 作为 IoT 到 S3 或 Reshift 的交付流,并使用 EMR 集群进行数据处理,但是对于一个微型演示项目来说它们显得有点笨重。

AWS 架构设置了以下关键参数:

  1. 如果你的设备没有报告任何数据,那么 AWS 的使用则是免费的。根据 Amazon 的免费层级,少量的设备可以免费使用。
  2. 由于各个组件提供自由选择的构建方式,因此其扩展性很高并且开箱即用
  3. 傻瓜式启动。你只需使用JavaScript、Python 或 Java等主流的编程语言编写你的程序逻辑并定义规则代码即可运行,不需要对平台有太多的了解。

分析与计算

假设你的后台程序一分钟只需要处理几个请求,这意味着大部分时间 CPU 都是空闲的。如果你不想为空闲时间付费,那么 serverless 架构就很适合你,它能够确保你不会为多余的空闲时间付费。

假设你有10,000个设备,它们每15分钟上报一次数据且数据量很小,那么这些设备在一个月内(大约730小时)总共产生大约2,920万次请求。

AWS IoT 每1M数据量的请求费用为5美元,DynamoDB 一秒内每10个 put 请求或者50个 get 请求收取0.0065美元。

如果我们仅通过 AWS IoT 接收数据,每月需支付146美元;如果还需要将这些数据存储在容量最小的 DynamoDB 中,则需要再支付14美元。我们每月的总账单为160美元,相当于每个设备每月花费0.02美元,每个请求花费0.000005美元。虽然我们并没有把lambda、storage和API 网关的价格标出来,但实际上它们已经包含在账单之中,它们只占账单中非常小的一小部分,因此我们并没有详细列出它们的价格。

一个具有数千个连接设备的 IoT 解决方案每个月花费不到两百美元,这是非常划算的。但是,让我们想象一下,如果你有数千个设备,每个设备每秒钟(而不是每15分钟)报告一次关键数据,你需要为 serverless 服务支付的费用是多少呢?

实际上,一万台设备每秒发送一个消息的话 - 每月支付费用将超过13.6万美元,十万台设备则需支付136万美元。每台设备的每月成本将增加到13.61美元。

看到这里,你还会考虑为你的 IoT 解决方案构建 serverless 服务吗?

评估 IoT 方案的优缺点

上面的数据表明,优化你的请求率将几乎线性地减少你每月的帐单。

这使我们必须考虑另外一个重要指标 - 总成本。超出了一个阈值之后,serverless 服务将会变得不划算和低效。

例如,传统的架构的实施成本不会如此显着地依赖于设备数量或者每秒的请求数量,而是被其他额外的费用消耗掉。该成本可以通过开源解决方案来降低。

毫无疑问,serverless 架构也有很多优点:

  • 将资本支出转化为运营支出,从而降低成本
  • 你不必考虑内部系统的运维
  • 降低开发和部署成本并缩短开发时间(更快的上市时间)
  • 它具有可扩展性和容错性

需要考虑的第一个因素是满足你的项目需求。如果你不在乎云锁定,那么 serverless 方法将是很合适你的:

  • 你正在经营一个初创公司,需要快速验证你的想法,或者需要将产品尽快推入市场。
  • 你的解决方案不需要频繁地将数据从设备传输到云端,因此需要将每个设备的成本维持在较低的水平。

另一方面,如果你正在构建不确定的云平台和高度可定制的解决方案并且需要操作实时数据,那么你可以考虑定制化或者开源的 IoT 解决方案。


http://www.niftyadmin.cn/n/1322350.html

相关文章

ESP32/ESP32S2直连腾讯云,实现微信小程序控制

文章目录一、准备材料二、编译三、配网四、总结一、准备材料 esp32/esp32s2模组,点击获取USB-TTL,点击获取vmware虚拟机获取请到vmware官网获取Ubuntu镜像请到Ubuntu官网获取虚拟机安装方法参考链接:https://pan.baidu.com/s/1YaT48ebMmjGB8…

移动周刊第 204 期:Android NDK 实战开发、iOS App 启动性能优化

前言 随着日全食的到来,本周 Android 8.0 最终拉开帷幕,Google 正式采取了“OREO”的甜品来命名。基于此,Google 最新的手机操作系统和 Android Nougat 的下一版本不仅由此而得名,而且 Google 还将最新的源代码推送至 AOSP。 “好…

向来有些神秘的ThoughtWorks,突然之间要被Roy卖掉的原因竟然是……

又双叒叕有大新闻! 昨天,ThoughWorks 软件工程师、软件开发方面著作者及国际知名演说家 Martin Fowler 在个人网站上发布一篇“Roy sells ThoughtWorks”博文,Martin Fowler 首先抛出了重磅炸弹,表示:“我们的创始人和…

Google 工程师一天写多少代码?

提起程序员,大家的第一印象是?而程序员的日常?而以代码为主要工作的程序员,一天写多少代码才算达标? 来自 CSDN 论坛的程序员们说: 每天精华代码是 1 行。代码不在多,而在于精简、高效、美观。真…

程序员有什么错?凭什么杀我祭天

近几年各大 App 的“更新日志”们挣脱了传统的枷锁,开始彻底放飞了自我! 提起“更新日志”界的网红人物,第一位莫过于混迹各大公司的 Peter 先生! 事件一:Medium 之写了一堆 Bug 的 Peter 在 2015 年 4 月底 Medium iO…

Facebook 是如何抄袭并逼死其他创业公司的?

摘要:在这个弱肉强食、强者生存的世界,当“垄断”的科技巨头 Facebook 怼上刚冒出芽的初创公司 Houseparty ,面对其处处施压,不是“抄袭”其产品就是意欲收购,初创公司最难的可能不再是起步,而是在起步之后…

30 多年的软件经验,总结出 10 个编写出更好代码的技巧

30 多年的软件经验,总结 10 个最佳妙招。 那么,何以敲出一手好代码? 好代码可以定义为易读、易懂、易调试、易改,最重要的还要少缺陷。显然,要想敲出一手好代码,是要花不少时间,但这在长久来看是…

计算机视觉在 IoT 领域的实践应用

计算机视觉将改变物联网。 计算机视觉的演变 计算机视觉技术在日常产品中的应用非常广泛,从可以识别手势的游戏机到可以自动对焦的手机摄像头。计算机视觉技术影响着我们生活的方方面面。 事实上,计算机视觉在政府方面以及商业领域已经应用多年。可以在…