深圳幻海软件技术有限公司 欢迎您!

Serverless应用决策指南

2023-03-20

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

译者 | 崔皓

策划 | 云昭

应用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​​