介绍无服务器意式浓缩咖啡扩展程序

作者: 本杰明·史密斯 |

今天,Serverless DA 团队正在推出 Ser verlesspresso Ex tensions ,这是一款允许你为 Serverlesspresso 做出贡献的新程序。 最佳扩展将添加到生产中运行的 Serverlesspresso 应用程序中,并在 亚马逊云科技 Compute Blog 上进行介绍。

什么是 Serverlesspresso?

Serverlesspresso 是一款多租户事件驱动的无服务器应用程序,适用于弹出式咖啡吧,允许您通过手机订购。2022 年,Serverlesspresso 在全球的技术活动中处理了超过 20,000 份订单。在今年的re: Invent上,它 出现在亚马逊首席技术官沃纳·沃格斯 博士的主题演讲 中。它作为事件驱动的应用程序的示例进行了展示,该应用程序易于发展。

该架构由多个无服务器应用程序组成,自re: Invent 2021推出 以来一直是 开源且免费提供 的。

什么是可扩展性?

可扩展性是在不修改已有的核心代码的情况下向现有软件添加新功能的能力。Web 浏览器的扩展就是一个例子,说明可扩展性有多么有用。第三方编写扩展程序时,核心网络浏览器代码不会被更改或影响,但最终用户可以获得原始浏览器作者所设想或意图之外的新的、丰富的功能。

在许多生产业务应用程序中,可扩展性可以帮助您跟上用户请求的步伐。它允许您创建新的、有用的功能,而无需重新架构代码的核心、原始部分。选择支持这一概念的架构风格可以帮助您在用户需求变化时保持灵活性。

EDA 如何支持可扩展性

Serverlesspresso 建立在 事件 驱动架构 (EDA) 之上。 这是一种使用事件来解耦应用程序组件的架构风格。事件驱动的架构为在微服务之间创建松散耦合的通信提供了一种有效的方法。当你设计需要可扩展性的工作负载时,这使其成为一个不错的架构选择。

松散耦合的微服务能够独立扩展和失败,从而提高应用程序的弹性。开发团队可以快速为其团队的微服务构建和发布功能,无需担心应用程序中其他微服务的行为。此外,可以在现有事件的基础上添加新功能,而无需更改应用程序的其余部分。

编舞和编排 是分布式服务如何相互通信的两种不同模型。在协调中,沟通受到更严格的控制。中央服务协调服务的交互和调用顺序。

编舞无需严格控制即可实现沟通。事件在服务之间流动,无需任何集中协调。包括Serverlesspresso在内的许多应用程序都将编舞和编排用于不同的用例。诸如 亚马逊 Ev entBridge 之类的事件总线可用于编舞,而 亚马逊云科技 Step Function s 等工作流程编排服务可以帮助 构建编排。

生产应用程序中不断出现新的功能需求。我们可以通过在事件总线中为事件创建新规则来满足对事件驱动应用程序的新要求。这些规则可以在不影响现有应用程序堆栈的情况下为应用程序添加新功能。

Serverlesspresso EDA 扩展程序的特征

  1. 扩展资源无权与扩展定义之外的资源(包括核心应用程序资源)进行交互。
  2. 扩展必须包含至少一条用于路由现有 Serverlesspresso 事件的新 EventBridge 规则。
  3. 扩展可以独立于其他扩展和核心应用程序进行部署和删除。

构建 Serverlesspresso 扩展程序

本节介绍如何为Serverlesspresso构建扩展程序,该扩展程序在与核心应用程序保持分离的同时添加了新功能。任何人都可以为 Serverlesspresso 贡献扩展程序。使用 Serverlesspresso 扩展程序 GitHub 存储库来托管您的扩展程序

  1. 完成 GitHub 问题模板
  2. 克隆存储库。复制并重命名示例 _extension_model 目录
  3. 添加相关的扩展模板和源文件。
  4. 将所需的元信息添加到 “ Readme.m d”。
  5. 使用新的扩展文件向存储库发出拉取请求。

其他指导可以在存储库的 P ublishing.md 文件中找到。

可帮助您构建的工具和资源

赛事解耦带来了一系列新的挑战。查找事件及其架构可能是一个困难的过程。开发人员必须与负责发布事件的团队进行协调,或者浏览文档以找到其架构,然后手动为该事件创建对象,以便在代码中使用该对象。

亚马逊 EventBridge 架构 注册表有助于解决这一挑战。它会自动查找事件及其结构或架构,并将它们存储在共享的中心位置。对于 serverlesspresso Extensions,我们创建了 Serverlesspresso 事件目录 ,并在其中填充了来自 EventBridge 架构注册表的事件。这里记录了所有 Serverlesspresso 事件,以帮助您了解如何在扩展中使用它们。这包括制作和消费活动的服务,以及每个活动的示例方案。

赛事玩家

事件播放器是一个 Step Functions 工作流程,可模拟 Serverlesspresso 酒吧的 15 分钟操作。它通过重播一系列真实事件来做到这一点。在构建和测试扩展程序时,使用事件播放器生成 Serverlesspresso 事件。每个事件都会发送到名为 Serverlesspresso 的事件总线上。

  1. 克隆这个存储库: git clone https://github.com/aws-samples/serverless-coffee.git
  2. 将目录更改为活动播放器:c d 可扩展 性/EventPlayer
  3. 使用 亚马逊云科技 SAM CLI 部署 EventPlayer:sam
    build & sam deploy

这将部署 Step Functions 工作流程和名为 “ Serverless presso” 的自定义事件总线

运行赛事播放器

  1. 从 亚马逊云科技 管理控制台打开活动播放器。
  2. 选择 “ 开始执行 ” ,保留默认输入负载,然后选择 “ 开始执行”。

玩家需要大约 15 分钟才能完成。

关于您的延期提交

无服务器 DA 团队将在提交后的 14 天内对扩展程序进行审查。提交扩展程序时,您的扩展程序将成为开源产品的一部分,并受存储库中现有许可证的保护。任何客户都可以在同一许可证下使用它。有关帮助构建 Serverlesspresso 扩展程序的其他指导和想法,请使用以下资源:

  • 了解有关 Serverlesspresso 的更多信息!
  • serverlesspresso 工作坊
  • 什么是事件驱动架构
  • 使用事件驱动架构构建下一代应用程序
  • 高级无服务器工作流程模式和最佳实践

结论

现在,您可以为 Serverlesspresso 构建扩展程序,并可能通过提交 Serverlesspresso 扩展插件在 亚马逊云科技 Compute Blog 上亮相。最好的扩展将在生产中添加到 Serverlesspresso 中。

一些演示扩展程序已经开发完毕并记录在案, 网址为 https://github.com/aws-samples/serverless-coffee/tree/main/extensions 。在创建自己的扩展之前,你可以下载并安装这些扩展,看看它们是如何构造的。

访问 无服务器工作流程集 ,浏览许多可部署的工作流程,以帮助构建无服务器应用程序。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。