AWS Step Functions
複数の AWS サービスをビジュアルなワークフローとして連携させるサーバーレスオーケストレーションサービスで、分岐、並列実行、エラーハンドリングを宣言的に定義できる
概要
AWS Step Functions は、複数の AWS サービスを組み合わせたワークフローをビジュアルに設計・実行するサーバーレスオーケストレーションサービスです。Amazon States Language (ASL) という JSON ベースの言語でステートマシンを定義し、Lambda 関数、ECS タスク、SNS 通知、SQS メッセージ送信、DynamoDB 操作など 200 以上の AWS サービスを直接統合できます。順次実行、並列実行、条件分岐、ループ、待機、エラーハンドリング (リトライ、キャッチ) を宣言的に定義でき、複雑なビジネスロジックをコードではなくワークフロー定義として管理できます。Standard ワークフローは最大 1 年間の実行をサポートし、Express ワークフローは最大 5 分間の高頻度・短時間の処理に最適化されています。Workflow Studio を使えば、ドラッグ&ドロップでワークフローを視覚的に構築できます。
Step Functions のワークフローパターン
Step Functions は多様なワークフローパターンをサポートしています。Task ステートは Lambda 関数や AWS サービスの呼び出しを行い、Choice ステートは条件に基づいて分岐します。Parallel ステートは複数のブランチを同時に実行し、すべてのブランチが完了するまで待機します。Map ステートは配列の各要素に対して同じ処理を並列実行し、大量データのバッチ処理に適しています。Wait ステートは指定した時間だけ実行を一時停止し、外部システムの処理完了を待つ場合に使用します。エラーハンドリングでは、Retry フィールドで指数バックオフ付きのリトライを定義し、Catch フィールドでエラー時のフォールバック処理を指定できます。これらのステートを組み合わせることで、注文処理、データパイプライン、機械学習ワークフロー、人間の承認フローなど、複雑なビジネスプロセスを実装できます。
Azure Logic Apps との比較
Azure で Step Functions に対応するサービスは Azure Logic Apps と Azure Durable Functions です。Step Functions は ASL (JSON) でワークフローを定義するのに対し、Logic Apps はビジュアルデザイナーと JSON ベースのワークフロー定義言語を使用します。Logic Apps は 400 以上のコネクタ (Salesforce、Office 365、SAP など) を標準で提供しており、SaaS 連携が豊富です。Step Functions は AWS サービスとの統合に特化しており、外部 SaaS との連携には Lambda 関数を介する必要があります。料金面では、Step Functions Standard は状態遷移 1,000 回あたり約 0.025 ドル、Express は 100 万リクエストあたり約 1.00 ドル + 実行時間課金です。Logic Apps の Consumption プランはアクション実行あたり約 0.000125 ドルで、ワークフローの複雑さによってコスト比較が変わります。Step Functions の強みは、AWS サービスとの SDK 統合により Lambda 関数を介さずに直接 DynamoDB や SQS を操作できる点で、コストとレイテンシの両方を削減できます。