

# 持久性函数或 Step Functions
<a name="durable-step-functions"></a>

Lambda 持久性函数和 Amazon Step Functions 都能够实现可靠的工作流编排，并具有自动状态管理和故障恢复功能。它们服务于不同的开发人员偏好和架构模式。持久性函数针对 Lambda 中的应用程序开发进行了优化，而 Step Functions 则专为跨 Amazon 服务的工作流编排而构建。

## 何时使用持久性函数
<a name="durable-sfn-when-durable"></a>

在以下情况下使用持久性函数：
+ 您的团队更喜欢使用标准编程语言和熟悉的开发工具
+ 您的应用程序逻辑主要在 Lambda 函数中
+ 您想要精细控制代码中的执行状态
+ 您正在构建以 Lambda 为中心的应用程序，工作流和业务逻辑紧密耦合
+ 您想要快速迭代，而不在代码和可视化/JSON 设计器之间切换

## 何时使用 Step Functions
<a name="durable-sfn-when-step"></a>

在以下情况下使用 Step Functions：
+ 您需要可视化工作流表示来实现跨团队可见性
+ 您正在编排多个 Amazon 服务，想要在没有自定义 SDK 代码的情况下进行本机集成
+ 您需要零维护基础设施（无修补、运行时更新）
+ 非技术利益相关者需要了解和验证工作流逻辑

## 决策框架
<a name="durable-sfn-decision-framework"></a>

使用下面的问题确定哪项服务适合您的使用案例：
+ **您的主要关注点是什么？** Lambda 中的应用程序开发 → 持久性函数。跨 Amazon 的工作流编排 → Step Functions。
+ **您的首选编程模型是什么？** 标准编程语言 → 持久性函数。基于图形的 DSL 或可视化设计器 → Step Functions。
+ **涉及多少项 Amazon 服务？** 主要是 Lambda → 持久性函数。多项 Amazon 服务 → Step Functions。
+ **您使用什么开发工具？** Lambda 开发人员体验、带有 LLM 代理的 IDE、编程语言特定的单元测试框架、Amazon SAM、Amazon CDK、Amazon Toolkit → 持久性函数。可视化工作流生成器，Amazon CDK 用于建模工作流 → Step Functions。
+ **谁管理基础设施？** 想要在 Lambda 中实现灵活性 → 持久性函数。想要完全托管、零维护 → Step Functions。

## 功能对比
<a name="durable-sfn-comparison"></a>

下表比较了 Step Functions 和 Lambda 持久性函数之间的主要功能：


| 功能 | Amazon Step Functions | Lambda 持久性函数 | 
| --- | --- | --- | 
| 主要关注点 | 跨 Amazon 的工作流编排 | Lambda 中的应用程序开发 | 
| 服务类型 | 独立的专用工作流服务 | 在 Lambda 内运行 | 
| 编程模型 | 基于图形的 Amazon States Language DSL 或 Amazon CDK | 标准编程语言（JavaScript/TypeScript、Python） | 
| 开发工具 | 控制台/Amazon Toolkit IDE 扩展中的可视化生成器，Amazon CDK | IDE 和 LLM 代理中的 Lambda DX、单元测试框架、Amazon SAM、Amazon Toolkit IDE 扩展 | 
| 集成 | 220 多项 Amazon 服务，16000 个 API | Lambda 事件驱动编程模型扩展（事件源） | 
| 管理 | 完全托管、运行时不可知、零维护（无修补、运行时更新） | 在 Lambda 环境中进行管理 | 
| 适用于 | 业务流程和 IT 自动化、数据处理、AI 工作流 | 分布式事务、有状态应用程序逻辑、函数编排、数据处理、AI 工作流 | 

## 混合架构
<a name="durable-sfn-hybrid"></a>

许多应用程序都能从同时使用这两项服务中受益。一种常见模式是在 Lambda 中对应用程序级逻辑使用持久性函数，而 Step Functions 在 Lambda 函数之外的多个 Amazon 服务之间协调高级工作流。

## 迁移注意事项
<a name="durable-sfn-migration"></a>

**从简单入手，日益复杂：**对于以 Lambda 为中心的工作流从持久性函数开始。当您需要多服务编排或可视化工作流设计时，请添加 Step Functions。

**现有 Step Functions 用户：**对已建立的跨服务工作流保留 Step Functions。对于需要可靠性的新 Lambda 应用程序逻辑，请考虑使用持久性函数。

## 相关资源
<a name="durable-sfn-related"></a>
+ [Lambda 持久性函数](durable-functions.md)
+ [使用 Step Functions 编排 Lambda 函数](with-step-functions.md)
+ [开始使用持久性函数](durable-getting-started.md)