SAA-C03:AWS Certified Solutions Architect - Associate 回復性のあるアーキテクチャの設計 問2
回復性のあるアーキテクチャの設計/スケーラブルで疎結合なアーキテクチャの設計1 件の注文イベントを、通知・在庫・分析という 3 つの独立したシステムへ同時に配信したいと考えています。各システムを疎結合に保ちつつ並行して配信する設計はどれですか。
当サイトのオリジナル問題(SAA-C03:AWS Certified Solutions Architect - Associateの出題範囲「回復性のあるアーキテクチャの設計」に対応。実際の試験問題ではありません)
- A1 つの SQS キューを 3 つのシステムで奪い合って取り出す
- B各システムを順番にポーリングして呼び出す
- CAmazon CloudFront を使ってイベントを 3 システムへ配信する
- DAmazon SNS トピックにイベントを発行し、複数のサブスクライバー(SQS キューや Lambda)へファンアウトして並行配信する
正解:D
解説
1 つのイベントを複数の独立したシステムへ同時に届けたい場合は、Amazon SNS のパブリッシュ/サブスクライブ(pub/sub)によるファンアウトが適しています。SNS トピックにメッセージを発行すると、サブスクライブしている複数の宛先(SQS キューや Lambda など)へ並行して配信されます。各システムは自分の SQS キューで受け取れば疎結合を保てます。
選択肢ごとの解説
- A誤り。1 つの SQS キューを複数システムで奪い合うと、各メッセージは原則 1 つのコンシューマーにしか渡らず、全システムへの同時配信になりません。
- B誤り。順番にポーリングする方式は密結合で、並行・同時の配信になりません。
- C誤り。CloudFront は CDN(コンテンツ配信)であり、イベントのファンアウト配信には使いません。
- D正しい。SNS トピックへ発行して複数サブスクライバーへファンアウトすれば、疎結合を保ちつつ並行配信できます。