0

Serverless应用决策指南

 1 year ago
source link: https://www.51cto.com/article/721433.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
874cc8a07c0c12ea101126e3847eea57f127d9.jpg

译者 | 崔皓

策划 | 云昭

应用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、对象存储

集成

  • REST API

加工

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

安全与合规

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

DevOps

  • CI/CD
  • 健康仪表板、成本管理、账户管理

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平台是至关重要的。下面提供了一个简单的决策指导。

图片

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

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

原文链接:

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


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK