AWS Step Functions で設計するワークフローオーケストレーション - 標準とExpress の使い分け

Step Functions によるワークフロー設計、標準ワークフローと Express ワークフローの選定基準、エラーハンドリングパターンを解説します。

Step Functions の基本概念

Step Functions はサーバーレスのワークフローオーケストレーションサービスです。ワークフローをステートマシンとして定義し、各ステートが AWS サービスの呼び出しや条件分岐、並列処理を実行します。Lambda 関数を連鎖させる場合、関数間の呼び出し順序、エラーハンドリング、リトライロジックを各関数内に実装する必要がありますが、Step Functions ではこれらをワークフロー定義 (ASL) に宣言的に記述します。ビジュアルエディタでワークフローをドラッグ&ドロップで構築でき、実行状況をリアルタイムにグラフで確認できます。

この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

標準ワークフローと Express ワークフローの選定

標準ワークフローは状態遷移ごとに実行履歴を永続化し、最大 1 年間の長時間実行をサポートします。料金は状態遷移 1 回あたり約 0.000025 USD です。注文処理、承認フロー、データパイプラインなど、実行履歴の監査が必要で、実行頻度が比較的低いワークロードに適しています。Express ワークフローは実行履歴を永続化せず、最大 5 分間の短時間実行に特化しています。料金は実行回数と実行時間に基づき、大量の短時間実行では標準ワークフローより大幅に低コストです。IoT デバイスからのイベント処理、API Gateway のバックエンド、ストリーミングデータの変換など、高スループット・短時間のワークロードに最適です。

エラーハンドリングと並列処理

Step Functions の Retry フィールドでは、エラータイプごとにリトライ回数、初期待機時間、バックオフ率を宣言的に定義できます。例えば Lambda.ServiceException には最大 3 回、指数バックオフでリトライし、ビジネスロジックのエラーにはリトライせず Catch で別のステートに遷移させるといった制御が可能です。Catch フィールドでキャッチしたエラーは、フォールバックステートで通知送信やクリーンアップ処理を実行できます。Map ステートは配列の各要素に対して同じ処理を並列実行します。分散マップモードでは S3 バケット内の CSV や JSON ファイルを入力として、最大 10,000 の並列実行で大規模バッチ処理を実行できます。

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。

まとめ

Step Functions はサーバーレスアーキテクチャにおけるワークフローの複雑さを管理するサービスです。Lambda 関数間の連携ロジックをコードから分離し、宣言的なワークフロー定義で可視化・管理できます。標準と Express の使い分けでコストを最適化し、Retry/Catch でエラーハンドリングを標準化することで、堅牢なサーバーレスアプリケーションを構築できます。

AWS の優位点

  • Amazon States Language (ASL) で Lambda、ECS、Glue、SageMaker など 220 以上の AWS サービスを直接統合し、コードなしでオーケストレーションを定義できる
  • 標準ワークフローは最大 1 年間の実行をサポートし、実行履歴の完全な監査ログを提供する
  • Express ワークフローは毎秒 10 万件以上の実行をサポートし、IoT データ処理やストリーミング ETL に最適
  • Retry と Catch フィールドでステートごとのリトライ戦略とエラーハンドリングを宣言的に定義でき、Lambda 関数内のリトライロジックが不要になる
  • Map ステートで配列データの並列処理を実行し、分散マップモードでは S3 上の数百万件のオブジェクトを並列処理できる

同じテーマの記事