SAA / ドメイン2 レジリエントなアーキテクチャの設計
AWS Step Functions
は、複数のAWSサービスやアプリケーション処理をステートマシンとして連携するワークフローサービスです。
SAA では、分岐、並列実行、待機、再試行、エラー処理をコードへ埋め込まず、長い業務フローを可視化して管理する場合に選びます。
概要
Amazon States Languageで状態と遷移を定義し、、、、などを呼び出します。各ステップの状態を保持するため、障害時に最初からやり直す必要を減らせます。
主要技術
①StandardとExpress ⚠️ 頻出
| ワークフロー | 用途 | 判断ポイント |
|---|---|---|
| Standard | 長時間・監査性重視 | 実行履歴とexactly-once型の進行が重要です。 |
| Express | 高頻度・短時間 | イベント処理のとコストを重視します。 |
Standardは1回の実行を最長1年まで続けられ、状態遷移の数で課金されます。実行は1回だけ進む (exactly-once) ため、決済のように二重に実行できない処理に向き、実行履歴はコンソールやで90日間確認できます。Expressは最長5分で、実行回数と実行時間で課金されます。非同期実行は少なくとも1回 (at-least-once)、同期実行は多くても1回 (at-most-once) の実行で、履歴は Logsへ出力して確認します。Expressは、ジョブの完了を待つ統合 (.sync) と、タスクトークンで外部からの応答を待つコールバック (.waitForTaskToken) に対応しないため、人の承認を待つワークフローはStandardで作ります。
②状態と制御
Task、Choice、Parallel、Map、Wait、Pass、Fail、Succeedなどを組み合わせます。分散処理の分岐や並列化を宣言的に表現できます。
Mapステートには2つのモードがあります。インラインモードは前のステップから渡された配列を処理し、同時に実行できる反復は40までです。分散モード (Distributed Map) は、のオブジェクト一覧やCSVファイルを直接入力にでき、各反復を子ワークフローとして最大10,000並列で実行するため、数百万件のデータを一度に処理できます。分散モードはStandardワークフローで使います。
③再試行とエラー処理
Retryで一時障害を再試行し、Catchで代替処理へ遷移します。と最大回数を設定し、無限再試行や下流サービスの過負荷を避けます。
④サービス統合
を挟まずに対応AWS を直接呼び出せます。同期実行、コールバック、ジョブ実行など、処理完了の待ち方を要件に応じて選びます。
試験対策
| 要件 | 選ぶサービス |
|---|---|
| 複数処理の順序・分岐・再試行を管理 | |
| 単純なイベントルーティング | |
| バッファリングと負荷平準化 | |
| 短い処理コードを実行 |
「ワークフローの状態を保持」「人の承認待ち」「複数サービスの補償処理」が判断キーワードです。