

# 耐久性のある関数か Step Functions か
<a name="durable-step-functions"></a>

Lambda の耐久性のある関数と AWS Step Functions はどちらも、自動状態管理と障害復旧による信頼性の高いワークフローオーケストレーションを可能にします。デベロッパーのさまざまな好みやアーキテクチャパターンに対応します。耐久性のある関数は Lambda 内のアプリケーション開発用に最適化され、Step Functions は AWS サービス間のワークフローオーケストレーション用に構築されています。

## 耐久性のある関数を使用するタイミング
<a name="durable-sfn-when-durable"></a>

Durable Functions は、次の場合に使用します。
+ チームが標準のプログラミング言語と使い慣れた開発ツールを好む場合
+ アプリケーションロジックが主に Lambda 関数内にある場合
+ コードの実行状態をきめ細かく制御したい場合
+ ワークフローとビジネスロジックが密結合された Lambda 中心のアプリケーションを構築している場合
+ コードとビジュアル/JSON デザイナーを切り替えずにすばやく反復処理したい場合

## Step Functions を使用すべき状況
<a name="durable-sfn-when-step"></a>

Step Functions は、次の場合に使用します。
+ チーム間の可視性に視覚的なワークフロー表現が必要な場合
+ 複数の AWS サービスをオーケストレーションしていて、カスタム SDK コードを使用しないでネイティブに統合したい場合
+ メンテナンス不要のインフラストラクチャ (パッチ適用、ランタイム更新なし) が必要な場合
+ 非技術的な利害関係者がワークフローロジックを理解して検証する必要がある場合

## 決定フレームワーク
<a name="durable-sfn-decision-framework"></a>

次の質問を使用して、どちらのサービスがユースケースに適しているかを判断します。
+ **主に何を重視しますか?** Lambda でのアプリケーション開発 → 耐久性のある関数。AWS 全体でのワークフローオーケストレーション → Step Functions。
+ **好みのプログラミングモデルは何ですか?** 標準プログラミング言語 → 耐久性のある関数。グラフベースの DSL またはビジュアルデザイナー → Step Functions。
+ **関係する AWS サービスはいくつですか?** 主に Lambda → 耐久性のある関数。複数の AWS サービス → Step Functions。
+ **どの開発ツールを使用していますか?** Lambda デベロッパーエクスペリエンス、LLM エージェントを使用した IDE、プログラミング言語固有のユニットテストフレームワーク、AWS SAM、AWS CDK、AWS Toolkit → 耐久性のある関数。ビジュアルワークフロービルダー、ワークフローをモデル化するために AWS CDK → Step Functions。
+ **インフラストラクチャを管理するのは誰ですか?** Lambda 内の柔軟性を希望 → 耐久性のある関数。フルマネージド、メンテナンス不要を希望 → Step Functions。

## 機能の比較
<a name="durable-sfn-comparison"></a>

次の表は、Step Functions と Lambda の耐久性のある関数の主な機能を比較したものです。


| 機能 | AWS Step Functions | Lambda の耐久性のある関数 | 
| --- | --- | --- | 
| 主な焦点 | AWS 全体でのワークフローオーケストレーション | Lambda でのアプリケーション開発 | 
| サービスタイプ | スタンドアロンの専用ワークフローサービス | Lambda 内で実行する | 
| プログラミングモデル | グラフベースの Amazon States Language DSL または AWS CDK | 標準プログラミング言語 (JavaScript/TypeScript、Python) | 
| 開発ツール | コンソール/AWS Toolkit IDE 拡張機能のビジュアルビルダー、AWS CDK | IDE および LLM エージェント内の Lambda DX、ユニットテストフレームワーク、AWS SAM、AWS Toolkit IDE 拡張機能 | 
| 統合 | 220 以上の AWS サービス、16,000 の API | Lambda イベント駆動型プログラミングモデル拡張機能 (イベントソース) | 
| 管理 | フルマネージド、ランタイム非依存、メンテナンス不要 (パッチ適用なし、ランタイム更新なし) | Lambda 環境内で管理 | 
| 次の用途に適しています | ビジネスプロセスと IT の自動化、データ処理、AI ワークフロー | 分散トランザクション、ステートフルアプリケーションロジック、関数オーケストレーション、データ処理、AI ワークフロー | 

## ハイブリッドアーキテクチャ
<a name="durable-sfn-hybrid"></a>

多くのアプリケーションは、両方のサービスを使用する利点があります。一般的なパターンとしては、耐久性のある関数は Lambda 内のアプリケーションレベルのロジックに使用し、Step Functions は Lambda 関数以外の複数の AWS サービスにわたって高レベルのワークフローを調整します。

## 移行に関する考慮事項
<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)