SAP-C02-075 · 理解確認
Loose CouplingとApplication Integration
9問 · 1問ずつ確認
注文APIは、下流の在庫更新サービスが数分停止しても注文受付を継続し、在庫更新は復旧後に処理できればよい。1つの論理ワーカープールが各注文を処理する。最も適切な統合方式はどれか。
B. Amazon SNSトピックへ発行し、同じ注文を複数の独立した在庫更新処理へ必ず配信する
C. Amazon SQSキューへ作業を送信し、在庫更新ワーカーが独立して受信・処理する
D. Amazon EventBridgeルールだけで在庫更新処理の完了状態を長期間保持する
答えと解説
答え:C
下流処理の完了を注文受付の成功条件にする必要がなく、1つの論理処理系へ後から作業を渡せればよいため、Amazon SQSが適します。
注文確定イベントを請求、通知、分析の3システムへ配信する。各システムは同じイベントを独立して処理し、1つが停止しても他を止めず、停止したシステムは復旧後に未処理分を処理したい。最も適切な構成はどれか。
B. Amazon SNSトピックに請求・通知・分析それぞれ専用のAmazon SQSキューをサブスクライブする
C. 注文サービスから請求・通知・分析を同期呼び出しし、3システムすべての成功を注文確定条件にする
D. 1つのAWS Step Functions実行を3システム共通の作業キューとして使用し、各処理系が状態を取得する
答えと解説
答え:B
SNSで同じイベントをファンアウトし、処理系ごとに専用SQSを持たせることで、各システムが独立した未処理メッセージを保持できます。
複数のAWSサービスと独自アプリケーションが業務イベントを発行する。イベントのsourceやdetailの内容に応じて異なる処理先へルーティングし、イベント発行側には各受信側を認識させたくない。最も適切なサービスはどれか。
B. Amazon SNSの単一トピックから条件に関係なく全サブスクライバーへ配信
C. Amazon MQ for ActiveMQ
D. Amazon EventBridgeのイベントバスとルール
答えと解説
答え:D
EventBridgeではイベントパターンに基づいてターゲットを選択し、発行側と処理先を分離できます。
注文処理は、在庫確保、支払い、承認待ち、出荷の複数ステップで構成される。条件分岐や待機があり、現在どの処理段階にあるかも管理したい。最も適切なサービスはどれか。
B. Amazon SNSで全ステップを同時に配信し、処理順序は各サブスクライバーへ任せる
C. AWS Step Functionsで処理順序、状態、分岐、待機をワークフローとして管理する
D. Amazon EventBridgeの配信再試行だけで業務ワークフロー全体の状態を管理する
答えと解説
答え:C
Step Functionsは、複数ステップの状態、処理順序、分岐、待機を一連のワークフローとして管理したい場合に適します。
オンプレミスのActiveMQをAWSへ移行する。既存アプリケーションはOpenWireを使用しており、メッセージングコードの変更を最小限にしたい。最も適切な選択はどれか。
B. Amazon MQ for ActiveMQを使用する
C. Amazon EventBridgeへOpenWireクライアントを直接接続する
D. AWS Step FunctionsをActiveMQ互換ブローカーとして使用する
答えと解説
答え:B
既存のOpenWireベースのメッセージング契約を維持したいことが決定打です。
Amazon SQS標準キューで業務処理を疎結合化する。ワーカー障害や再配信を考慮した設計として正しいものを3つ選択してください。
ReceiveMessageで受信した時点でメッセージは永久に削除されるB. 同じメッセージが複数回配信される可能性を考慮し、処理をべき等にする
C. 処理成功後にメッセージを削除し、失敗時は可視性タイムアウト後の再処理を許容する
D. 標準キューでは厳密な順序が保証されるため順序を考慮しなくてよい
E. 繰り返し処理に失敗するメッセージをデッドレターキューへ隔離する
F. 標準キューは1回のみの配信を保証するため重複対策は不要である
答えと解説
答え:B / C / E
SQS標準キューは少なくとも1回の配信を前提とします。正常処理後に削除し、失敗した処理は可視性タイムアウト後に再試行できるようにします。
同じ口座IDに対する更新は送信順に処理し、キュー自身が重複メッセージを導入しないことが重要である。一方、異なる口座IDは並行処理したい。最も適切な選択はどれか。
B. Amazon SNS FIFOトピックだけを使用し、各口座の処理状態や未処理作業をサブスクライバー側では保持しない
C. Amazon EventBridgeで口座IDをイベントパターンへ含め、同一口座のイベント順序もEventBridgeに保証させる
D. Amazon SQS FIFOキューを使用し、口座IDを
MessageGroupIdとして同一口座内の順序を維持する答えと解説
答え:D
SQS FIFOキューでは、同一MessageGroupId内の順序を維持しながら、異なるメッセージグループを並行処理できます。
ある処理系は最大7日間停止する可能性がある。イベントはAmazon EventBridgeで分類している。停止中の対象イベントを失わず、復旧後にも未処理分へ追いつくための処理時間を確保し、処理系自身の速度ですべて処理する必要がある。最も適切な設計はどれか。
B. EventBridgeのターゲットにAmazon SQSを設定し、最大停止時間と復旧後の追いつき時間を合わせてカバーする保持期間を14日以内で設定する
C. Amazon SNSのEメールサブスクリプションへイベントを送信し、復旧後にメールから業務イベントを再生成する
D. Amazon SQSを使用するが、最大7日停止する場合でも保持期間はデフォルト4日のまま変更しない
答えと解説
答え:B
EventBridgeの既定再試行だけでは、最大7日の停止期間を吸収できません。Amazon SQSへ受け渡し、最大停止時間と復旧後の追いつき時間をカバーできる保持期間を設定します。SQSの保持期間はデフォルト4日、最大14日です。
ECサイトでは、決済の承認結果は注文確定前に同期的に確認する必要がある。一方、注文確定後のメール通知と分析更新は数分遅れてもよく、これらの停止で注文受付を止めたくない。最も適切な設計はどれか。
B. 決済、メール通知、分析更新をすべて同期呼び出しにし、どれか1つでも停止したら注文受付を失敗させる
C. 決済結果は同期的に確認し、注文確定後のメール通知と分析更新は非同期処理へ分離する
D. 決済結果を確認せず注文を確定し、後から決済失敗だけを利用者へ通知する
答えと解説
答え:C
同期性は業務要件ごとに分けます。注文成立に必須の決済結果は同期依存として維持し、即時完了が不要な通知や分析を非同期化することで、非重要な下流依存から注文受付を分離できます。