Q55 — AWS SAA-C03 第1章

第 55/65 問 | ← 第1章

Q55. ある企業には、ペイロード付きメッセージを送信して処理を依頼する「送信アプリケーション」と、そのメッセージを受信して処理する「処理アプリケーション」の2つのアプリケーションがあります。この企業は、両アプリケーション間のメッセージを処理するAWSサービスを実装したいと考えています。送信アプリケーションは1時間あたり約1,000件のメッセージを送信します。メッセージの処理には最大2日間かかる場合があります。また、メッセージの処理に失敗した場合でも、それらは保持され続けなければならず、残りのメッセージの処理に影響を与えてはなりません。これらの要件を満たし、かつ最も運用効率が高いソリューションはどれですか?

正解: C. 送信アプリケーションおよび処理アプリケーションをAmazon Simple Queue Service(Amazon SQS)キューと統合します。処理に失敗したメッセージを収集するためのデッドレターキュー(DLQ)を設定します。

解説

送信アプリケーションと処理アプリケーション間のメッセージを効率的に処理するという要件を満たす最も運用効率の高いソリューションは、選択肢Cです。つまり、送信アプリケーションおよび処理アプリケーションをAmazon Simple Queue Service(Amazon SQS)キューと統合し、処理に失敗したメッセージを収集するためのデッドレターキュー(DLQ)を設定する方法です。 このソリューションが最も適している理由は以下の通りです。 1. Amazon Simple Queue Service(Amazon SQS):SQSは、完全マネージド型のメッセージキューイングサービスであり、送信アプリケーションと処理アプリケーションを疎結合化(decouple)します。メッセージを一時的にバッファリングし、信頼性の高い配信を提供します。 2. デッドレターキュー(DLQ):SQSでDLQを設定することで、定義されたリトライ回数を超えて処理に失敗したメッセージを自動的にDLQへ移動できます。これにより、失敗したメッセージが他のメッセージの処理に悪影響を及ぼすことを防ぎます。 このソリューションを採用することで、企業は以下のメリットを得られます。 ・疎結合化とスケーラビリティ:SQSは送信アプリケーションと処理アプリケーションを分離し、それぞれが独立して動作・スケール可能になります。送信アプリケーションは自身のペースでキューへメッセージを送信でき、処理アプリケーションは自身のペースでメッセージを取得・処理できます。 ・メッセージ保持:SQSは、メッセージを明示的に削除されるか、DLQへ移動されるまで自動的にキュー内に保持します。これにより、メッセージの紛失を防ぎ、最大2日間かかる処理にも対応できます。 ・エラー処理:定義されたリトライ回数内で処理に失敗したメッセージはDLQへ移動されるため、他のメッセージの処理を妨げることなく、問題の調査・対応が可能です。 選択肢Aでは、Redisデータベースを実行するAmazon EC2インスタンスの構築が提案されています。これは機能的には可能ですが、EC2インスタンスおよびRedisデータベースの管理・保守といった運用オーバーヘッドが発生し、SQSのような完全マネージドサービスと比べて運用効率が劣ります。 選択肢Bでは、Amazon KinesisデータストリームとKinesis Client Library(KCL)を活用する方法が提案されています。Kinesisは高スループットなリアルタイムストリーミング処理に優れていますが、本問の要件(1時間あたり1,000件、最大2日間の遅延許容)には過剰な複雑さをもたらし、最適とは言えません。 選択肢Dでは、Amazon SNSを用いた通知配信が提案されています。SNSはパブリッシュ/サブスクライブ方式のサービスであり、メッセージの配信は可能ですが、SQSと比べてメッセージの保持期間や失敗時の隔離(例:DLQによる失敗メッセージの分離)といった機能が不足しており、特に処理失敗時のメッセージ保持要件を十分に満たしません。