耐久性のある関数か Step Functions か
Lambda の耐久性のある関数と AWS Step Functions はどちらも、自動状態管理と障害復旧による信頼性の高いワークフローオーケストレーションを可能にします。デベロッパーのさまざまな好みやアーキテクチャパターンに対応します。耐久性のある関数は Lambda 内のアプリケーション開発用に最適化され、Step Functions は AWS サービス間のワークフローオーケストレーション用に構築されています。
耐久性のある関数を使用するタイミング
Durable Functions は、次の場合に使用します。
チームが標準のプログラミング言語と使い慣れた開発ツールを好む場合
アプリケーションロジックが主に Lambda 関数内にある場合
コードの実行状態をきめ細かく制御したい場合
ワークフローとビジネスロジックが密結合された Lambda 中心のアプリケーションを構築している場合
コードとビジュアル/JSON デザイナーを切り替えずにすばやく反復処理したい場合
Step Functions を使用すべき状況
Step Functions は、次の場合に使用します。
チーム間の可視性に視覚的なワークフロー表現が必要な場合
複数の AWS サービスをオーケストレーションしていて、カスタム SDK コードを使用しないでネイティブに統合したい場合
メンテナンス不要のインフラストラクチャ (パッチ適用、ランタイム更新なし) が必要な場合
非技術的な利害関係者がワークフローロジックを理解して検証する必要がある場合
決定フレームワーク
次の質問を使用して、どちらのサービスがユースケースに適しているかを判断します。
-
主に何を重視しますか? 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。
機能の比較
次の表は、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 ワークフロー |
ハイブリッドアーキテクチャ
多くのアプリケーションは、両方のサービスを使用する利点があります。一般的なパターンとしては、耐久性のある関数は Lambda 内のアプリケーションレベルのロジックに使用し、Step Functions は Lambda 関数以外の複数の AWS サービスにわたって高レベルのワークフローを調整します。
移行に関する考慮事項
シンプルに開始し、複雑に進化: Lambda 中心のワークフローに耐久性のある関数から始めます。マルチサービスオーケストレーションまたはビジュアルワークフロー設計が必要になったら、Step Functions を追加します。
既存の Step Functions ユーザー: 確立されたクロスサービスワークフローのために Step Functions を保持します。信頼性を必要とする新しい Lambda アプリケーションロジックには、耐久性のある関数を検討してください。