Q60 — AWS SAA-C03 第3章

第 60/65 問 | ← 第3章

Q190. ある企業が、ユーザーが写真をアップロードして画像にフレームを追加できる画像分析アプリケーションを開発しました。ユーザーは画像と、どのフレームを適用するかを示すメタデータをアップロードします。このアプリケーションは単一のAmazon EC2インスタンスとAmazon DynamoDB(メタデータの保存用)で構成されています。アプリケーションの人気が高まり、ユーザー数が増加しています。また、1日の中の時刻や曜日によって、同時接続ユーザー数が大きく変動すると予想されます。企業は、成長するユーザー数に対応できるよう、アプリケーションのスケーラビリティを確保する必要があります。これらの要件を満たすソリューションはどれですか?

正解: 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インスタンス間での画像共有に不向きです。