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)キューを作成します。データ生成側のコードに変更を加え、データをこのキューに送信するようにします。また、データ消費側のコードにも変更を加え、キューからデータを処理するようにします。

解説

このシナリオでは、データ処理は順次行われるが結果の順序は不要であり、かつマイクロサービス間の非同期・疎結合な通信が求められています。Amazon SQSは、メッセージの非同期送信・受信を可能にし、送信者と受信者のデカップリングを実現するため、マイクロサービス間通信の標準的な選択肢です。一方、Amazon SNSはプッシュ型の1対多配信に適しており、順次処理や厳密な順序保証が必要ない場合でも、複数の消費者への同時配信が発生し、重複処理や競合のリスクがあります。AWS Lambdaは一時的なメッセージ中継には不向きで、耐久性・スケーラビリティ・エラーハンドリングの観点から推奨されません。DynamoDB Streamsは変更イベントのキャプチャに特化しており、データ永続化が主目的のユースケースに適しますが、単純なマイクロサービス間メッセージングには過剰かつ柔軟性に欠けます。したがって、最も適切な選択肢はAです。