当前位置: 首页 > 科技观察

使用无服务器架构快速构建和扩展IoT项目

时间:2023-03-13 03:05:32 科技观察

您发布了一个新的IoT产品,可能使用来自AWS、Azure或其他主要云提供商的IoT框架,您的设备现在可以从云端发送并接收数据。那么,如何处理这些数据以获得有价值的见解,例如设备健康遥测或用户行为跟踪?有许多不同的方法可以在云中建立数据处理基础设施,从而平衡控制和复杂性。无服务器架构最终是一种软件设计原则,它允许您在不管理基础设施的情况下构建、扩展和运行服务,而MistyWest对这种“无服务器”模型如何使团队能够快速构建和扩展云解决方案的洞察感到兴奋。为了帮助您了解这如何应用于IoT产品解决方案,我们提供了以下不同架构模式的概述,以及您何时应该考虑为您的项目采用无服务器。使用虚拟机现在,设置云管道的老式方法(如果您想要更多控制,推荐使用)是在云中启动虚拟机(VM)来运行处理代码。Azure虚拟机、AWSEC2或GCP计算引擎是一些常见的选项。您将获得一台虚拟计算机,其运行的代码与在您的个人计算机上运行的代码类似。但是,此路线的局限性在于您将很快耗尽单个VM的处理能力,尤其是当您处理来自数千个物联网设备的数据时。要获得更多处理能力,您可以添加更多VM并将处理分布到多台计算机上。Kubernetes和DockerSwarm等工具可让您跨多台机器编排工作负载,而云提供商提供AWSElasticKubernetesService和GoogleKubernetesEngine等服务,以支持在云中跨多台机器编排工作负载。AWSElasticBeanstalk或AzureAppServices等服务可自动设置和扩展常见Web开发框架(如Django、Rails和Node),是帮助您管理它们的绝佳入门服务。但是,设置和配置编排工具可能很复杂,需要大量时间和专业知识,并且不能直接为客户提供价值。如果您想快速制作原型,为客户提供价值,并且您知道您的解决方案可以扩展,那么无服务器可能是正确的选择。什么是无服务器架构?无服务器架构允许您将服务器管理完全卸载给云提供商,同时您可以直接专注于您的应用程序代码。一个更常见的架构子集是功能即服务(FaaS)。但无服务器架构提供的远不止这些——从数据库和队列系统到事件处理服务,每个云服务提供商都提供各种各样的服务来满足您的需求。图1–多个手动配置的服务器无服务器收益计费:一个好处是无服务器平台倾向于根据无服务器功能运行的频率和时间收费,因此您只需为使用的计算时间付费。这在开发期间保持低成本,同时以在发布期间自动扩展的方式构建。响应能力:无服务器函数也倾向于快速响应需求高峰,因为平台会自动增加可用的计算能力来运行函数,然后随着负载的减少缩减计算能力。这样可以有效地利用资源,仅在需要时部署计算能力。语言选项:对多种编程语言有很好的支持,因此您很可能可以使用您选择的语言构建无服务器功能。例如,AWSLambda原生支持Java、Go、PowerShell、Node.js、c#、Python和Ruby,并提供运行时API以允许使用其他编程语言。AzureFunctions支持c#、Javascript、f#、Java、Powershell、Python和Typescript。错误预防:使用无服务器功能构建必然会创建一个无状态和无主机的系统,这简化了系统的推理并防止了一些围绕状态管理的复杂错误。数据管道:使用IoT框架,您可以设置自动的、事件驱动的数据管道触发器和数据库存储。借助额外的可视化框架或开发您自己的内部仪表板,您可以即时监控进度。花更少的钱:如果您的VM已启动并正在运行,那么无论您是在充分利用这些资源,还是只是闲置,您都需要花钱。如果您的IoT设备很少发送小数据包,那么这并不理想,即使您有成千上万的设备不断传输数据,数据包之间也会有很多空闲时间,这将是非常低效的。利用无服务器框架,您只需为使用的内容付费,并且无需更改任何配置即可为您处理扩展——无论您拥有一台设备还是一百万台设备。此外,如果您正在使用Azure,正如《荒野中的无服务器》帖子中最初建议的那样,通过让它预测呼叫,您将能够显着减少冷启动。图2–在无服务器平台上运行的功能无服务器的缺点控制较少:使用无服务器平台的缺点之一是您对运行代码的实例的控制较少,因为您无法控制底层硬件的配置.在无服务器环境中,处理能力、内存和处理时间的限制可能是一个限制,而在虚拟机中,您可以垂直扩展很多。长延迟:另一个缺点是,当用户必须等待VM启动时,您对延迟的控制较少,因为平台会在需求高峰期处理不断增加的可用计算能力(即启动更多VM来运行功能)。这有时会导致第一个请求的长时间延迟,称为“冷启动延迟”,这在对延迟高度敏感的应用程序中可能是一个问题,尽管这通常不是问题。网上有很多serverless架构的成本比较;我们发现Medium上对ServerlessTransformation和BurningMonk的分析非常有帮助。无服务器架构非常适合物联网解决方案,并且越来越受欢迎。当今世界有数十亿台物联网设备在使用,拥有弹性架构对于快速投入生产至关重要。使用无服务器架构构建将使您能够快速制作原型、快速失败并从长远来看击败您的竞争对手——只需关注所有底层属性即可充分利用您的资金。