AWS ソリューションアーキテクト プロフェッショナル分散処理と配信経路の設計オリジナル・公式資料照合難易度★★★★☆
注文・在庫・決済サービスが各自のDBを持ち、単一の分散ACIDトランザクションは使わない。注文確定と在庫引当の後、決済が確定的に拒否された場合は、引当解除と注文取消しを業務上の補償操作として行う。Step Functionsを使う設計として最も適切なのはどれか。
A
Step FunctionsのFail状態に入れば、全サービスのCOMMITが自動で取り消されるとする
ワークフロー状態の失敗は、各サービスの独立したDBトランザクションの自動ROLLBACKではない。
B
決済の確定的拒否も無制限にRetryし、補償は作らない
確定的な業務上の拒否を再試行だけで解決できず、引当と注文の整合性が残る。
C
各成功ステップと補償操作を定義し、決済拒否時に必要な補償へ遷移させる★ 正解
問題で定めた業務上の巻戻しをSagaとして明示し、複数DB間の整合性を回復する。
D
決済拒否をCatchしてSuccessへ進めるだけで、在庫引当も解消済みと扱う
エラーを捕捉して成功扱いするだけでは、在庫と注文の補償操作を実行していない。
解説
Sagaでは各サービスのローカルトランザクションを進め、途中の失敗時には完了した処理に対応する補償操作をオーケストレーターが実行する。Step Functionsの失敗状態だけで別DBのCOMMITは取り消されない。補償自体にも再試行と冪等性を設計する。
根拠資料・確認情報
対応範囲:SAP-C03(2026-11-17開始予定、2026-10-30時点)
資料確認日:2026-10-30