Q60 — AWS SAA-C03 第3章
第 60/65 問 | ← 第3章
Q190. ある企業が、ユーザーが写真をアップロードして画像にフレームを追加できる画像分析アプリケーションを開発しました。ユーザーは画像と、どのフレームを適用するかを示すメタデータをアップロードします。このアプリケーションは単一のAmazon EC2インスタンスとAmazon DynamoDB(メタデータの保存用)で構成されています。アプリケーションの人気が高まり、ユーザー数が増加しています。また、1日の中の時刻や曜日によって、同時接続ユーザー数が大きく変動すると予想されます。企業は、成長するユーザー数に対応できるよう、アプリケーションのスケーラビリティを確保する必要があります。これらの要件を満たすソリューションはどれですか?
- A. AWS Lambdaを使用して画像を処理し、画像およびメタデータをDynamoDBに保存する。
- B. Amazon Kinesis Data Firehoseを使用して画像を処理し、画像およびメタデータを保存する。
- C. AWS Lambdaを使用して画像を処理し、画像はAmazon S3に保存し、メタデータはDynamoDBに引き続き保存する。 ✓
- D. EC2インスタンスを3台に増やし、プロビジョンドIOPS SSD(io2)タイプのAmazon Elastic Block Store(Amazon EBS)ボリュームを使用して画像およびメタデータを保存する。
正解: C. AWS Lambdaを使用して画像を処理し、画像はAmazon S3に保存し、メタデータはDynamoDBに引き続き保存する。
解説
正解はCです。アプリケーションのスケーラビリティと可用性を確保するには、ステートレスなコンピューティング(AWS Lambda)と、大規模かつ耐久性の高いオブジェクトストレージ(Amazon S3)を組み合わせ、メタデータは既存の高パフォーマンスなNoSQLデータベース(DynamoDB)で管理するのが最適です。Lambdaはイベント駆動型で、同時ユーザー数の変動に自動的にスケールし、サーバーレスであるため運用負荷が低いです。一方、画像のようなバイナリデータはDynamoDBではなくS3に保存すべきです(DynamoDBのアイテムサイズ制限は400 KBまでであり、画像ファイルには不向き)。選択肢Aは画像をDynamoDBに保存しようとしており、非現実的です。選択肢BはKinesis Data Firehoseはストリーミングデータのロードに特化しており、画像処理というバッチ/イベント指向のワークロードには不適切です。選択肢DはEC2の垂直・水平スケールを試みていますが、手動でのスケーリングであり、需要の急激な変動への柔軟な対応が難しく、またEBSは共有ストレージではなく、複数EC2インスタンス間での画像共有に不向きです。