注文処理の状態遷移・再試行・補償の管理

AWS Step Functionsは、視覚的なステートマシンを使用して複数のAWSサービス(Lambda、ECS、DynamoDB等)をオーケストレーションし、エラーハンドリング、指数バックオフ再試行、補償トランザクション(Sagaパターン)を容易に実装できる。 順序付きキューと失敗メッセージの隔離はできるが、処理ステップの状態・再試行・補償順序はアプリで実装する。ステートマシンの管理にはStep Functionsが適する。 複数サービスへ通知できるが、全体の進行と補償処理を管理する状態機械ではない。配信の再試行と業務上の返金は区別する。 イベントの振分けや配信失敗の隔離はできるが、成功済みの業務処理を逆順に取り消すワークフローは別途実装する必要がある。

複数のLambda関数やECSタスクで構成される注文処理ワークフローがある。決済、在庫引当、出荷手配の各ステップで障害が発生した場合、自動的に再試行(Retry)し、再試行上限に達した場合は補償トランザクション(返金処理やキャンセル)を実行するステートマシンを構築したい。

最も適切なサービスを1つ選択してください。

出典AWS非公式・オリジナル問題
ア
SQS FIFOとDLQで注文ステップを管理する
イ
SNSトピックと各サービスの再試行で注文ステップを管理する
ウ
AWS Step Functions
エ
EventBridgeルールとターゲットのDLQで注文ステップを管理する