Q60 — AWS SAA-C03 第7章
第 60/65 問 | ← 第7章
Q490. ある企業が、保険見積もりを処理するWebアプリケーションをAWS上で設計しています。ユーザーはアプリケーションから見積もりを依頼します。見積もりは見積もりの種類ごとに分離され、24時間以内に応答される必要があり、失われてはなりません。このソリューションは、運用効率を最大化し、保守作業を最小限に抑える必要があります。これらの要件を満たすソリューションはどれですか?
- A. 見積もりの種類ごとに複数のAmazon Kinesis Data Streamを作成します。Webアプリケーションを設定して、適切なデータストリームにメッセージを送信するようにします。各バックエンドのアプリケーションサーバーグループを、Kinesis Client Library(KCL)を使用して、自身のデータストリームからメッセージをプルするように設定します。
- B. 見積もりの種類ごとにAWS Lambda関数とAmazon Simple Notification Service(Amazon SNS)トピックを作成します。Lambda関数を対応するSNSトピックにサブスクライブします。アプリケーションを設定して、見積もり依頼を適切なSNSトピックにパブリッシュするようにします。
- C. 単一のAmazon Simple Notification Service(Amazon SNS)トピックを作成します。Amazon Simple Queue Service(Amazon SQS)キューをこのSNSトピックにサブスクライブします。SNSのメッセージフィルタリングを設定して、見積もりの種類に基づき適切なSQSキューへメッセージを配信するようにします。各バックエンドアプリケーションサーバーを、専用のSQSキューからメッセージを取得・処理するように設定します。 ✓
- D. 見積もりの種類ごとに複数のAmazon Kinesis Data Firehoseデリバリーストリームを作成し、データストリームをAmazon OpenSearch Serviceクラスターに配信します。アプリケーションを設定して、適切なデリバリーストリームにメッセージを送信するようにします。各バックエンドアプリケーションサーバーグループを、OpenSearch Serviceからメッセージを検索・処理するように設定します。
正解: C. 単一のAmazon Simple Notification Service(Amazon SNS)トピックを作成します。Amazon Simple Queue Service(Amazon SQS)キューをこのSNSトピックにサブスクライブします。SNSのメッセージフィルタリングを設定して、見積もりの種類に基づき適切なSQSキューへメッセージを配信するようにします。各バックエンドアプリケーションサーバーを、専用のSQSキューからメッセージを取得・処理するように設定します。
解説
要件を満たすには、メッセージの確実な配信(ロスト防止)、見積もり種別による分離、24時間以内の応答保証、および運用・保守負荷の最小化が必要です。選択肢Cは、SNS+SQSの組み合わせにより、メッセージの耐久性(SQSの永続性)と、SNSのメッセージフィルタリング機能による種別ごとのルーティングを実現します。また、SQSキューごとに独立したコンシューマー(バックエンドサーバー)を配置することで、スケーラビリティと障害隔離も確保されます。Lambda(B)はイベント駆動型で保守負荷は低いですが、SNS→Lambdaの連携では、Lambdaの実行時間制限や再試行挙動により、24時間以内の確実な応答保証が難しく、また失敗時の可視性・再処理が複雑になります。Kinesis(A, D)はリアルタイムストリーミング向けであり、24時間という比較的長いタイムウインドウや、メッセージの厳密な順序保証・ロスト防止の観点で過剰かつ複雑です。特にDはOpenSearch Serviceを検索エンジンとして使用する設計ですが、これはメッセージキューリングの目的には不適切で、耐久性・信頼性・運用簡易性の面で劣ります。したがって、最も適切なのはCです。