Q64 — AWS SAA-C03 第13章
第 64/100 問 | ← 第13章
Q964. ある企業が、Amazon EC2上でホストされているモノリシックアーキテクチャのWebアプリケーションから、サーバーレスなマイクロサービスアーキテクチャへ移行しようとしています。同社は、イベント駆動型かつ疎結合(ローズ・カップルド)のアーキテクチャをサポートするAWSサービスを活用したいと考えています。また、パブリッシュ/サブスクライブ(pub/sub)パターンを採用したいとしています。これらの要件を最もコスト効率よく満たすソリューションはどれですか?
- A. Amazon API Gateway REST API を設定し、そのAPIがAWS Lambda関数を呼び出して、イベントをAmazon Simple Queue Service (Amazon SQS) キューに発行するようにします。その後、1つ以上のサブスクライバーがSQSキューからイベントを読み取るように設定します。
- B. Amazon API Gateway REST API を設定し、そのAPIがAWS Lambda関数を呼び出して、イベントをAmazon Simple Notification Service (Amazon SNS) トピックに発行するようにします。その後、1つ以上のサブスクライバーがSNSトピックからイベントを受信するように設定します。 ✓
- C. Amazon API Gateway WebSocket API を設定し、そのAPIがAmazon Kinesis Data Streams のデータストリーム(エンハンスド・ファンアウト有効)に書き込むようにします。その後、1つ以上のサブスクライバーがそのデータストリームからイベントを受信するように設定します。
- D. Amazon API Gateway HTTP API を設定し、そのAPIがAWS Lambda関数を呼び出して、イベントをAmazon Simple Notification Service (Amazon SNS) トピックに発行するようにします。その後、1つ以上のサブスクライバーがそのトピックからイベントを受信するように設定します。
正解: B. Amazon API Gateway REST API を設定し、そのAPIがAWS Lambda関数を呼び出して、イベントをAmazon Simple Notification Service (Amazon SNS) トピックに発行するようにします。その後、1つ以上のサブスクライバーがSNSトピックからイベントを受信するように設定します。
解説
これらの要件を最もコスト効率よく満たすソリューションは、選択肢Bです。つまり、「Amazon API Gateway REST API を設定し、そのAPIがAWS Lambda関数を呼び出して、イベントをAmazon SNSトピックに発行する。その後、1つ以上のサブスクライバーがSNSトピックからイベントを受信する」構成です。理由は以下の通りです: ・イベント駆動型アーキテクチャ:SNSは、アプリケーションの異なるコンポーネント間で疎結合な通信を実現する、完全マネージド型のパブサブサービスです。 ・コスト効率:SNSは、特に大量のイベント発行・受信を想定した場合に非常にコスト効率が高く、課金は発行されたメッセージおよび受信されたメッセージの数に対してのみ行われます。 ・スケーラビリティ:SNSは自動的にスケールし、大量のイベントを処理できます。 ・疎結合性:SNSにより、各マイクロサービスは独立してスケール・開発可能となり、相互に直接接続する必要がありません。 ・API Gatewayとの統合:API Gatewayは、セキュアかつスケーラブルな方法でアプリケーションのAPIエンドポイントを公開し、クライアントによるイベントのトリガーを可能にします。 他の選択肢が不適切な理由: A:SQSは優れたキューイングサービスですが、パブサブ用途にはSNSほど効率的ではありません。SQSはポイント・ツー・ポイント通信を目的として設計されており、SNSは1対多の配信に最適化されています。 C:Kinesis Data Streamsは、リアルタイムのデータ処理およびストリーミング向けに設計されており、汎用的なイベントの発行・購読には不向きです。このユースケースでは過剰な機能であり、SNSと比較してコストも高くなる可能性があります。 D:これは本質的に選択肢Bと同じソリューションですが、API GatewayのAPIタイプがHTTP APIである点のみ異なります。REST APIとHTTP APIの両方ともLambda関数を呼び出せますが、HTTP APIは軽量で低コストですが、本問の要件(pub/sub、疎結合、コスト効率)においてREST APIとHTTP APIの差異は本質的ではなく、選択肢Bが最も明確かつ標準的な推奨構成です。 まとめると、選択肢Bは、pub/subパターンを用いたイベント駆動型・疎結合アーキテクチャを実現する上で、スケーラビリティ、コスト効率、API GatewayおよびLambdaとのシームレスな統合という観点から、最も適したソリューションです。