API309 | 高级 Serverless 工作流模式和最佳实践
关键字: [Amazon Web Services re:Invent 2023, Step Functions, Serverless Workflow Patterns, Step Functions Express Workflows, Callback Patterns, Managing Workflow Failures, Distributed Map State]
本文字数: 2800, 阅读完需: 14 分钟
视频
导读
您是一名使用 Amazon Step Functions 工作流构建应用程序的开发者吗?您是否需要指导您如何完全释放生产工作量?您想知道是选择快捷方式还是标准工作流程?或者是使用地图状态、并行状态还是嵌套工作流?在本次分享中,您将会了解到构建工作流程和成本优化结构的最佳实践以及可重复模式,并探索用于构建安全、大规模、高性能的 Serverless 应用程序便捷代码。我们将采用实景展现这些优势。
演讲精华
以下是小编为您整理的本次演讲的精华,共2500字,阅读时间大约是12分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。
贝恩·史密斯(Ben Smith)是亚马逊云科技(Amazon Web Services)位于伦敦的主要开发者倡导者。在演讲开始时,他首先介绍了自己,并分享了过去两年在与亚马逊云科技的Step Functions紧密合作构建无服务器应用程序的经验。由于贝恩曾与许多先进的Step Functions客户密切合作,他希望向观众传授一些宝贵的经验,帮助他们在自己的应用程序中使用Step Functions获得更多价值。
从一开始,贝恩就表达了对Step Functions的热情,并坚信在开始构建新的无服务器应用程序时,应首选使用Step Functions工具。他承诺会解释为什么他如此坚定地认为应始终使用Step Functions。
为了帮助观众充分理解他的观点,贝恩以Step Functions工作流程的形式规划了他的演讲内容。这种创新方法反映了贝恩如何将每个新问题视为一个工作流程,因为他已经在Step Functions上投入了大量时间用于构建。
他概述的演讲议程包括解释运行Step Functions的可用的不同模式,详细说明如何优化工作流以节省成本,讲述处理错误的有用模式,以及揭示实现极高可伸缩性的一项重大新功能。贝恩的首要目标是提供所需的知识,使与会者能够构建可靠、有弹性、可扩展、易于理解和快速开发的应用程序。
在深入探讨之前,贝恩首先为那些不熟悉该服务的观众介绍了一些关于Step Functions的基本知识。他描述了如何使用Step Functions创建由一系列步骤组成的工作流程,其中一步的输出成为下一步的输入。可以使用分支、循环、并行状态和等待状态等功能将步骤安排成所有类型的逻辑模式。
贝恩通过展示图形工作流程设计器来展示了Step Functions的使用是多么容易。在该设计器中,只需从左边的列拖动步骤到右边的简单表单配置即可添加逻辑。
他强调了一些Step Functions的关键优势,包括其自动扩展的无服务器特性、按使用付费的成本模型以及内置的可视化功能。工作流可以在图形设计器中定义,也可以使用亚马逊状态语言(Amazon States Language, ASL)代码,这使得它们可以版本控制、共享并添加到CI/CD管道中。
特别值得注意的是,Step Functions能够与原生的亚马逊云科技服务(如Lambda、DynamoDB、S3等)实现无缝集成。这意味着您可以直接在工作流程中调用这些服务,无需编写任何代码。对Ben而言,这也是Step Functions成为新的无服务器应用程序起点的关键原因。
在传统的方法中,通常建议先从编写Lambda函数开始,然后逐渐将其与其他服务(如数据库)连接,并添加用于调用的API网关。只有在对所有独立组件有了充分了解之后,您才能最终将这些组件组合成一个协调的工作流程。
然而,Ben认为这种做法是反直觉的,可能会导致不必要的复杂性。相反,他从Step Functions工作流程开始,并根据需要逐步插入操作,从而更易于构建和可视化应用程序的工作方式,而不是事后试图拼凑在一起。
为了证明他的观点,Ben展示了一个从DynamoDB获取项目的简单示例。传统的Lambda方法需要编写多行设置代码来处理SDK、参数、导出、错误处理等。但在Step Functions工作流程中,相同的逻辑只是一个简单的“获取项目”步骤,选择DynamoDB。
Step Functions版本同样具有可扩展性和良好的性能,但在以后重新查看应用程序时,更容易理解。图形化可视化还可以简化故障调试,因为可以显示确切哪个步骤出现了故障。
接下来,Ben介绍了Step Functions中可用的两种工作流类型。标准工作流是原始类型,支持长达1年的长期执行,异步调用,以及严格的一次执行语义。
Express工作流是最近引入的,旨在提供更高的吞吐量和经济性。它们更快地在状态之间转换,使用不同的定价模型,并支持更快的同步调用模式,如直接API集成。但是,Express工作流只能运行长达5分钟,并且至少执行一次语义。
并行性(同一工作流的多个并发执行)、并行状态(分支并发执行,最多达到设定的限制)、映射状态(并发迭代,最多达到40个的限制)以及分布式映射状态(针对最多10,000个并行执行的新功能)。
本文主要介绍了三位作者在亚马逊云科技(Amazon Web Services)上的实际应用案例。首先,他们分享了使用Step Functions映射状态构建Cervus Land网站的案例,该网站用于聚合亚马逊云科技的CUS内容。起初,该网站是通过顺序抓取博客元数据进行构建的,后来通过重构,采用映射状态下分散收集模式实现并发抓取,以及集中式GitHub提交,从而优化了性能和成本。
另一个案例是Servi Espresso,这是一个无服务器咖啡订购系统演示,专为re:Invent而建。原先的订单管理系统使用了API网关背后的Lambda函数,但后来被重建为一个Step Functions工作流,以提高性能并简化调试。
作者还展示了一个“无服务器GIF生成器”,它使用新的分布式映射状态以并发方式处理上传的视频以生成GIF片段。这可以处理大型视频,因为可以扩展到10,000个并行的工作流程执行。
总的来说,本文展示了如何使用Step Functions来构建弹性、可扩展且成本优化的无服务器应用程序。开发者可以从Step Functions工作流程开始,并利用优化模式,创建适用于各种用例的健壮且易于管理的应用程序。随着新的大规模扩展功能的出现,未来充满了无限可能。
在引人入胜的演讲中,作者对Step Functions的热情和丰富的实践经验展现得淋漓尽致。与会者无疑会带着将作者的宝贵经验应用于自己无服务器开发工作的决心离开会场。
下面是一些演讲现场的精彩瞬间:
演讲者展示了一个登录页面,页面上提供了与可部署模板、博客文章、视频、工作坊和代码示例等相关资源,这些内容将在演讲中涉及。
在演讲中,演讲者将阐述为何选择使用亚马逊云科技的Step Functions,包括其不同的运行模式、步骤生命周期、优化工作流程以降低成本、错误处理模式以及高可扩展性的新功能。
演讲者将指出,传统的无服务器应用程序构建方法往往繁琐且容易出错。
演讲者将通过案例分享客户是如何从简单的可伸缩的Lambda函数开始,逐步增加功能,直至Lambda函数变得过于复杂的。
演讲者还将介绍如何使用API Gateway、Step Functions和DynamoDB构建一个无服务器REST API,实现简单的CRUD操作,而无需编写代码。
演讲者邀请观众们访问Services Espresso网站,了解更多关于演讲中涉及的模板、博客文章、工作坊和代码示例的信息。
总结
本篇文章主要讲述了Ben Smith关于亚马逊云科技Step Functions的高级模式和最佳实践的见解。他强调了在工作流中启动新应用的重要性,以便更清晰地展示不同服务之间的互动。标准工作流通常长期运行,并按照状态转换进行计费。而快速工作流则更加高效,按照持续时间/内存进行计费,并支持同步调用。为了优化成本,可以在标准工作流内运行快速工作流,实现嵌套模式。此外,通过在状态间转换有效载荷数据,可以降低工作流的大小。为了避免使用Lambda进行简单操作,可以使用内置函数。通过使用回调模式,可以用单个等待状态替换轮询循环。对于故障情况,Step Functions提供了内置的补偿模式支持,例如sagas和断路器。最后,分布式映射状态可以将工作流扩展到10,000个并行执行,以处理大量工作负载。总的来说,Step Functions具有弹性、可扩展性和可观测性。通过优化工作流,可以在降低成本的同时提高可靠性。
演讲原文
想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
2023亚马逊云科技re:Invent全球大会 - 官方网站
点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!
点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!
即刻注册亚马逊云科技账户,开启云端之旅!
【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”
亚马逊云科技是谁?
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。