無限ノック › SAP 練習問題一覧 › 問題
SAP新しいソリューションのための設計複数選択

ある大手ECプラットフォームは、1日あたり10万件の注文を処理するマイクロサービスアーキテクチャを運用しています。現在は注文サービス→在庫サービス→支払いサービス→配送サービスへの同期REST API呼び出しチェーンで構成されています。ブラックフライデーなどのピーク時に支払いサービスのタイムアウトが発生すると、在庫が引き落とされたままの注文がロストするデータ不整合が生じています。新アーキテクチャへの要件は以下のとおりです。 ①正確に1回の注文処理(冪等性の保証) ②長時間実行ワークフローの完全な状態遷移履歴と監査証跡の保持 ③支払い失敗時の補償トランザクション(在庫の自動ロールバック) ④メンテナンス時の処理一時停止と再開(注文ロストなし) ⑤各ステップのタイムアウトとリトライの設定可能な制御 要件を充足する実装として正しいものを2つ選んでください。

A
AWS Step Functions スタンダードワークフローで注文フロー(在庫予約→支払い処理→配送手配)を実装し、各ステップにRetry設定(最大試行回数・指数バックオフ・IntervalSeconds・MaxDelaySeconds)とCatch設定(補償トランザクションステートへのフォールバック)を定義する。WaitForTaskTokenパターンで支払いサービスを非同期呼び出しし、実行履歴をAWSコンソール・APIで最大90日間参照できる(長期保持はCloudWatch Logs連携で対応)。
✓ 正解
Step Functionsスタンダードワークフローは最大90日の実行履歴保持(要件②、長期保持はCloudWatch Logs連携で対応)、Retry/Catchによる補償トランザクションと宣言的リトライ制御(要件③⑤)を提供する。WaitForTaskTokenで支払いサービスの非同期応答を待機でき、SQS FIFOと組み合わせることで全要件を充足できる。
B
Amazon SQS FIFOキューを各サービス間のバッファとして配置し、MessageDeduplicationIdに注文IDを設定して冪等性を実現する。Lambdaコンシューマーの可視性タイムアウトで処理失敗時の自動リキューを実装し、デッドレターキューで最終失敗注文を分離する。メンテナンス時はLambdaのイベントソースマッピングをDisableにして処理を一時停止し、キュー内の注文を保持したまま再開できる。
✓ 正解
SQS FIFOのMessageDeduplicationId(注文IDを設定)により5分ウィンドウ内の重複メッセージを自動排除して冪等性を実現(要件①)。LambdaイベントソースマッピングをDisableにすることでメンテナンス中の処理を一時停止しキュー内の注文をロストせず保持・再開できる(要件④)。
C
Amazon Kinesis Data Streamsを注文イベントソースとして採用し、シャードごとのシーケンス番号でステートを管理してEnhanced Fan-Outコンシューマーで並列処理を実現する。DynamoDBに最終整合性モデルでステートを永続化して冪等性を担保し、Amazon EventBridgeカスタムバスでサービス間の疎結合を実現する。
Kinesis Data Streamsはリアルタイム大量データ処理に優れるが、ワークフロー状態管理・補償トランザクション・監査証跡を組み込みで提供しない。最終整合性のDynamoDBステート管理では厳密な冪等性保証が難しく、シャード単位のシーケンス番号管理は実装複雑性が高い。
D
Amazon EventBridgeカスタムイベントバスにアーカイブとリプレイ機能を有効化し、各マイクロサービスがイベントをパブリッシュ・サブスクライブする疎結合アーキテクチャを実装する。イベント失敗時はEventBridge PipesでSQS DLQにルーティングし、DynamoDB Streamsで状態変更を追跡して監査証跡を記録する。
EventBridgeのアーカイブ/リプレイはイベント再処理に有効だが、ワークフローの状態遷移管理(要件②)・補償トランザクション(要件③)・ステップ単位のタイムアウト/リトライ制御(要件⑤)を内蔵せず、追加実装コストが大きく要件を単体では満たせない。
E
AWS Step Functions Expressワークフローで高スループット処理を実現し、DynamoDB条件付き書き込みで冪等性を実装する。Lambda関数のべき等キーをSQSメッセージIDと紐付けて二重処理を防止し、CloudWatch Logsで実行履歴を記録してX-Rayで各ステップのレイテンシを可視化する。
Step Functions Expressワークフローは最大実行時間が5分に制限されており、支払いサービスとの非同期処理を含む注文フローには不適切。実行履歴はCloudWatch Logsのみに記録され、コンソールから個別実行の完全な状態遷移を参照する機能(要件②)を持たない。

解説

AWS Step Functions スタンダードワークフローは要件②③ ⑤を直接実現する。実行履歴はコンソールとAPIで最大90日間参照でき完全な状態遷移ログを提供し(要件②、長期保持にはCloudWatch Logs連携を推奨)、ステートマシン定義にRetryとCatchを宣言的に記述することでエラー種別ごとの補償トランザクション(在庫ロールバックステートへのフォールバック)とリトライ制御が可能(要件③⑤)。WaitForTaskTokenで支払いサービスのような外部非同期処理を無制限に待機できる。 Amazon SQS FIFOキューはMessageDeduplicationIdによる5分間の重複排除ウィンドウで要件①を実現し、LambdaイベントソースマッピングのEnable/Disableによりメンテナンス中の注文をキューに保持したまま一時停止・再開が可能(要件④)。DLQで最終失敗注文を安全に隔離できる。 選択肢CのKinesis Data Streamsはリアルタイムストリーミングに優れるが、補償トランザクションのネイティブサポートがなく状態遷移履歴も提供しない。 選択肢DのEventBridgeはイベントルーティングに有効だが、ワークフロー状態管理・補償トランザクション・ステップ単位のタイムアウト/リトライを内蔵せず要件②③ ⑤を単体で満たせない。 選択肢EのStep Functions Expressワークフローは最大実行時間が5分に制限され長時間注文フローには不適切。実行履歴はCloudWatch Logsのみに記録されコンソールから個別実行の状態遷移を参照できない(要件②不充足)。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSAPを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SAP の問題一覧に戻る