Q99 — AWS SAA-C03 第11章

第 99/100 問 | ← 第11章

Q799. ある企業が、スコア更新をバックエンドプロセッサにストリーミングし、その後リーダーボードに結果を掲載するモバイルゲームを開発しています。ソリューションアーキテクトは、大規模なトラフィックの急増に対応でき、モバイルゲームからの更新を受信順に処理でき、処理済みの更新を高可用性データベースに保存できるソリューションを設計する必要があります。また、このソリューションの運用管理負荷を最小限に抑えることも求められています。これらの要件を満たすために、ソリューションアーキテクトは何を行うべきでしょうか?

正解: A. スコア更新を Amazon Kinesis Data Streams にプッシュします。Kinesis Data Streams の更新を AWS Lambda で処理します。処理済みの更新を Amazon DynamoDB に保存します。

解説

大規模なトラフィックの急増への対応、受信順での更新処理、高可用性データベースへの処理済み更新の保存、および運用管理負荷の最小化という要件を満たすには、以下の選択肢 A が推奨されます。A:スコア更新を Amazon Kinesis Data Streams にプッシュし、AWS Lambda で処理し、Amazon DynamoDB に保存する。Amazon Kinesis Data Streams は、大規模なトラフィックの急増にも耐えられる、スケーラブルかつ耐久性の高いリアルタイムストリーミングサービスです。Kinesis Data Streams へのプッシュにより、更新を受信順に確実に処理できます。AWS Lambda を使用すれば、ストリームから自動的にトリガーされ、ワークロードの変動に応じて自動スケーリング可能な関数で更新を処理できます。これにより、EC2 インスタンスのプロビジョニングや管理の必要がなくなります。処理済み更新の保存先として Amazon DynamoDB を採用することで、高可用性・高スケーラビリティを備えた完全マネージド型の NoSQL データベースを利用でき、運用管理負荷を最小限に抑えられます。他の選択肢が不適切な理由は以下の通りです。B:Kinesis Data Streams へのプッシュと EC2 インスタンスによる処理では、Auto Scaling を活用してもインスタンスの管理・スケーリングに運用負荷が生じます。また、個別のゲーム更新を保存する用途には Amazon Redshift は最適ではなく、OLAP 向けのデータウェアハウスであるため、低遅延のトランザクション処理には向きません。C:Amazon SNS はパブサブ型のメッセージングサービスであり、メッセージの順序保証がありません(FIFO トピックも存在しますが、本問では明記されておらず、一般的な SNS トピックを前提としています)。さらに、EC2 上で動作する SQL データベースは運用管理負荷が大きく、DynamoDB ほどのスケーラビリティや可用性を提供できません。D:Amazon SQS はメッセージキューングには有効ですが、標準キューではメッセージの処理順序が保証されません(FIFO キューであれば順序保証可能ですが、本問では明記されていません)。また、EC2 インスタンスの Auto Scaling は管理負荷を増加させ、RDS Multi-AZ は可用性は高いものの、DynamoDB ほどの自動スケーリング性能や、単一テーブル設計による低遅延トランザクション処理には劣ります。したがって、すべての要件——大規模トラフィックへの対応、受信順処理、高可用性データベースへの保存、および運用管理負荷の最小化——を満たす最適なソリューションは、選択肢 A です。