Q44 — AWS SAA-C03 第2章
第 44/65 問 | ← 第2章
Q109. ある企業が、Amazon EC2インスタンス上で実行されるレガシーなデータ処理アプリケーションを保有しています。このアプリケーションではデータが逐次処理されますが、結果の順序は重要ではありません。また、アプリケーションはモノリシックアーキテクチャを採用しており、需要増加に対応する唯一のスケーリング手段は、EC2インスタンスのサイズを大きくすることです。同社の開発者は、このアプリケーションをAmazon Elastic Container Service(Amazon ECS)上でマイクロサービスアーキテクチャに再構築することを決定しました。ソリューションアーキテクトは、マイクロサービス間の通信について何を推奨すべきでしょうか?
- A. Amazon Simple Queue Service(Amazon SQS)キューを作成します。データ生成側のコードに変更を加え、データをこのキューに送信するようにします。また、データ消費側のコードにも変更を加え、キューからデータを処理するようにします。 ✓
- B. Amazon Simple Notification Service(Amazon SNS)トピックを作成します。データ生成側のコードに変更を加え、このトピックに通知をパブリッシュするようにします。また、データ消費側のコードにも変更を加え、このトピックをサブスクライブするようにします。
- C. AWS Lambda関数を作成し、メッセージを渡すために使用します。データ生成側のコードに変更を加え、データオブジェクトとともにLambda関数を呼び出すようにします。また、データ消費側のコードにも変更を加え、Lambda関数から渡されたデータオブジェクトを受信するようにします。
- D. Amazon DynamoDBテーブルを作成し、DynamoDB Streamsを有効化します。データ生成側のコードに変更を加え、データをこのテーブルに挿入するようにします。また、データ消費側のコードにも変更を加え、DynamoDB Streams APIを使用して新しいテーブルエントリを検出し、データを取得するようにします。
正解: A. Amazon Simple Queue Service(Amazon SQS)キューを作成します。データ生成側のコードに変更を加え、データをこのキューに送信するようにします。また、データ消費側のコードにも変更を加え、キューからデータを処理するようにします。
解説
このシナリオでは、データ処理は順次行われるが結果の順序は不要であり、かつマイクロサービス間の非同期・疎結合な通信が求められています。Amazon SQSは、メッセージの非同期送信・受信を可能にし、送信者と受信者のデカップリングを実現するため、マイクロサービス間通信の標準的な選択肢です。一方、Amazon SNSはプッシュ型の1対多配信に適しており、順次処理や厳密な順序保証が必要ない場合でも、複数の消費者への同時配信が発生し、重複処理や競合のリスクがあります。AWS Lambdaは一時的なメッセージ中継には不向きで、耐久性・スケーラビリティ・エラーハンドリングの観点から推奨されません。DynamoDB Streamsは変更イベントのキャプチャに特化しており、データ永続化が主目的のユースケースに適しますが、単純なマイクロサービス間メッセージングには過剰かつ柔軟性に欠けます。したがって、最も適切な選択肢はAです。