译者 | 崔皓
策划 | 云昭
应用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
- 可观察性
- 健康仪表板、成本管理、账户管理
- IAC
3.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平台是至关重要的。下面提供了一个简单的决策指导。
8.结论
虽然Serverless计算正在迅速发展,带来了新的服务和功能,这些新服务和功能往往超出了目前应用的范围,组织可能在Serverless的应用策略上面临重大挑战。本文试图提供简化的指导 ,可能有助于加快Serverless的应用。
译者介绍
崔皓,51CTO社区编辑,资深架构师,拥有18年的软件开发和架构经验,10年分布式架构经验。
原文链接:
https://dzone.com/articles/decision-guidance-for-serverless-adoption