首页>国内 > 正文

Serverless应用决策指南

2022-10-27 16:09:05来源:51CTO

译者 | 崔皓

策划 | 云昭


(相关资料图)

应用Serverless会面临许多棘手的难题,本文提供一份实用指南,告诉你如何采用Serverless架构,解决Serverless架构中的实际挑战,有哪些合适的方案并讨论Serverless如何实现响应式事件驱动架构。文章没有提到云提供商的Serverless服务,仅在示例中有所提及(AWS 参考)。

Serverless计算模型已达到了发展规律周期的“早期采用者”阶段,并且正在快速进入“早期多数”阶段。尽管Serverless的发展迅速惊人,但企业在采用Serverless将其应用到技术和架构,从而构建高效的 IT 生态系统方面确缺乏战略实践。本文试图为如何使用Serverless架构提供简化的决策指南,但没有对FaaS、BaaS和云服务提供商 (CSP) 提供的其他服务(例如无服务器数据库、API网关或边缘服务)的决策提供建议。

1.使用Serverless候选者的特征

在深入研究Serverless采用指南之前,了解使用Serverless的候选者特征非常重要。下表针对应用或负载模型提供了技术无关性特征,这些特征很容易融入Serverless。这些特征是更为复杂的Serverless模式、解决方案和架构。它们可以组合使用,并不具有排他性。

2.Serverless的候选架构

以下某些架构更适合跨应用程序、数据、集成、人工智能、物联网等采用Serverless。

应用

反应系统基于领域驱动设计的微服务扼杀者转换(Strangler Transformation)数据

大数据

包括SQL和No SQL数据库,例如,文档数据库、列式数据库、键值、RDBMS、对象存储数据处理流处理CDC批处理ETL​

集成

REST API事件驱动通知消息传递事件流工作流程

加工

HTTP/HTTP(s)BPM 工作流程录制转码人工智能/机器学习物联网事件处理区块链处理

安全与合规

IAM,身份联盟密钥、证书管理、RBAC、秘密保险库、HSM防火墙、DDoS监管数据合规物联网设备安全

DevOps

CI/CD可观察性健康仪表板、成本管理、账户管理IAC3.Serverless功能示例

下面列出了Serverless功能的示例,当然列表的内容还在不断扩充中。

对由内部和外部服务触发的事件采取行动。根据特定的时间表(定期)安排任务,例如进行备份和日志分析。为现有服务或应用程序实施API管理。执行应用程序逻辑以响应数据库更改。调用可自动扩展的API后端服务。图像处理与视觉识别服务相结合。基于目标的流、图像和视频操作。响应传感器输入 (IoT) 执行边缘分析。使用新的功能逻辑扩展和增强工作流以及相关数据(例如,发送通知、标记数据、添加天气数据)。充当不同服务之间的粘合剂以创建强大的管道。微服务的实现,以及并行计算或数据处理。应用程序需要基于事件/基于异步的通信来实现用例。轮询用例,pub-sub的实现。4.不适合Severless的案例

此外,在某些情况下,Serverless可能不适合如下情况:

需要高性能计算 (HPC) 并执行组件的工作负载。执行时间长且需要Master/Worker节点的集群进行处理的进程。需要控制底层基础架构组件(如物理套接字或内核)的工作负载,例如,工作负载需要绑定到每个内核、每个套接字或每个VM的许可证。在受监管行业运营的组织,组织需要使用专用基础架构,同时在非多租户环境中运行应用。需要使用预测或ML复杂算法,以及适合细粒度自动扩展规则的工作负载。长时间运行的任务。复杂(不可分离)或需要很长时间初始化的函数。需求有状态的会话来实现用例。涉及使用DB进行事务管理的功能,同时对快速扩展有要求。DB可能成为扩展的瓶颈。客户端强制要求合规性(例如,如果合规性需要扫描底层基础设施,因为在Serverless中没有特定的基础设施)。对运行时版本的实施要求是特定的(原因是我们无法控制Serverless运行时并且更新是由供应商驱动的)。Serverless的应用程序架构取决于供应商(供应商锁定的可能性,特别是涉及平台功能,例如身份验证、扩展、监控和配置管理)。当处理的数据本质上是敏感的时,多租户不是首选选项。5.简化的Serverless采用决策指导框架

根据特性、架构类型和用例,一个简单的Serverless采用决策指导框架如下所示。

CSP存在各种用于Serverless实施的服务类型,主要是FaaS/BaaS和Serverless容器平台。

6.Serverless平台的主要特征

下面列出了无服务器平台的一些关键特性。

简化的编程模型,因为整个应用程序可以描述为FaaS和BaaS的事件触发器,并且整个“应用程序”可以由更小的Serverless构建块组成。使用短时间、单一用途、RESTful函数专注于前端应用逻辑简单 (JSON) 输入/输出通过环境变量进行本地化配置Polyglot-选择适合自身需求的编程语言;组合用不同语言编写的函数。事件驱动- 多种调用模式(通过触发器/消息自动化,从API调用手动)简化的数据和服务集成——与存储(数据库、对象存储等)消息、API管理和其他提供商服务的“开箱即用”集成迈向“NoOps”——Serverless平台管理运营方面,例如供应、部署、自动扩展配置、可用性等。平台提供的运营支持服务-对日志记录和监控、身份和访问管理等的“内置”支持。仅为您使用的计算付费-定价基于功能执行时间或请求数。7.FaaS/BaaS与无服务器平台的简单决策指南

了解CSP的FaaS/BaaS服务之间的选择,使用可以运行容器的Serverless平台是至关重要的。下面提供了一个简单的决策指导。

9.结论

虽然Serverless计算正在迅速发展,带来了新的服务和功能,这些新服务和功能往往超出了目前应用的范围,组织可能在Serverless的应用策略上面临重大挑战。本文试图提供简化的指导,可能有助于加快Serverless的应用。

崔皓,51CTO社区编辑,资深架构师,拥有18年的软件开发和架构经验,10年分布式架构经验。

原文链接:

​​https://dzone.com/articles/decision-guidance-for-serverless-adoption​​​

关键词: 应用程序 工作负载 事件驱动 基础架构 基础设施

相关新闻

Copyright 2015-2020   三好网  版权所有 联系邮箱:435 22 640@qq.com  备案号: 京ICP备2022022245号-21