Q64 — AWS SAA-C03 第6章
第 64/65 問 | ← 第6章
Q429. ある企業は、監視デバイスのファleetからリアルタイムデータを受信するAPIを保有しています。このAPIは受信したデータを後続の分析のためにAmazon RDS DBインスタンスに保存します。監視デバイスからAPIへ送信されるデータ量は変動します。トラフィックが集中する期間には、APIが頻繁にタイムアウトエラーを返すようになります。ログの調査結果によると、データベースがAPIから発生する書き込みトラフィックのボリュームを処理できないことが判明しました。ソリューションアーキテクトは、データベースへの接続数を最小限に抑えつつ、高トラフィック時にもデータが失われないよう対応する必要があります。これらの要件を満たすソリューションはどれですか?
- A. DBインスタンスのサイズを、より多くのメモリを備えたインスタンスタイプに変更する。
- B. DBインスタンスをMulti-AZ構成のDBインスタンスに変更し、アプリケーションがすべてのアクティブなRDS DBインスタンスに書き込むように設定する。
- C. APIを変更して、受信データをAmazon Simple Queue Service (Amazon SQS) キューに書き込むようにする。Amazon SQSが起動するAWS Lambda関数を使用して、キューからデータを読み取り、データベースに書き込む。 ✓
- D. APIを変更して、受信データをAmazon Simple Notification Service (Amazon SNS) トピックに書き込むようにする。Amazon SNSが起動するAWS Lambda関数を使用して、トピックからデータを読み取り、データベースに書き込む。
正解: C. APIを変更して、受信データをAmazon Simple Queue Service (Amazon SQS) キューに書き込むようにする。Amazon SQSが起動するAWS Lambda関数を使用して、キューからデータを読み取り、データベースに書き込む。
解説
正解は選択肢Cです。Amazon SQSは、一時的なバッファとして機能し、急増する書き込みトラフィックを吸収できます。これにより、APIとデータベース間の直接的な結合が緩和され、データベースへの接続数を削減できます。また、SQSはメッセージの永続性を保証し、Lambda関数による非同期処理によって、一時的なデータベースの負荷や障害時にもデータの喪失を防ぎます。一方、選択肢Aは単なるスケールアップであり、接続数の削減やデータ損失防止には寄与しません。選択肢BはMulti-AZ構成は可用性向上には有効ですが、書き込みはプライマリDBインスタンスのみで実行され、レプリカへの書き込みは不可能です(書き込み負荷分散にはなりません)。選択肢DのAmazon SNSはプッシュ型の通知サービスであり、メッセージの永続性や再試行機構がSQSほど堅牢ではなく、またSNSからLambdaへの呼び出しはファンアウト用途が主で、順次・信頼性の高い処理にはSQSが適しています。