耐久性のある関数か Step Functions か - AWS Lambda

耐久性のある関数か 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 アプリケーションロジックには、耐久性のある関数を検討してください。