Q3 — AWS SAA-C03 第17章
第 3/89 問 | ← 第17章
Q1303. 電子商取引企業が、Webアプリケーションに商品レビュー機能を追加しようとしています。この機能は「レビュー投稿(Submit Review)」と「レビュー取得(Get Review)」の2つの機能で構成されます。「レビュー投稿」機能では、顧客が短いテキスト形式のレビューを送信できるようにします。「レビュー投稿」機能は、数千件もの同時レビュー投稿を処理できる必要があります。「レビュー取得」機能では、各商品IDに対応するすべてのレビューを取得します。「レビュー取得」機能は、低遅延での応答が求められます。これらの要件を満たすソリューションはどれですか?
- A. 「レビュー投稿」機能を、Auto Scalingグループ内のAmazon Elastic Container Service(Amazon ECS)クラスター上にデプロイし、Application Load Balancerをその前に配置します。レビューはAmazon S3バケットに保存し、「レビュー取得」機能ではS3バケットをクエリするように設定します。
- B. 「レビュー投稿」機能をAmazon EC2インスタンス上で実行し、RESTエンドポイントとして公開します。すべてのレビューをインスタンスストアボリュームに保存し、「レビュー取得」機能ではそのインスタンスストアボリュームをクエリするように設定します。
- C. Amazon API GatewayのREST APIを作成し、API内にSubmitReviewメソッドおよびGetReviewメソッドを定義します。統合タイプとしてAWSを選択し、サービスとしてAmazon DynamoDBを指定します。GetReviewメソッドに対してAPI Gatewayのキャッシュ機能を有効化します。 ✓
- D. 「レビュー投稿」機能をAWS Step Functionsで実装し、各レビュー投稿ごとにワークフローを開始するよう設定します。このワークフローでは、AWS Lambda関数を使用してレビューの検証およびAmazon ElastiCache(Redis OSS)クラスターへの保存を行います。「レビュー取得」機能では、このクラスターをクエリするよう設定します。
正解: C. Amazon API GatewayのREST APIを作成し、API内にSubmitReviewメソッドおよびGetReviewメソッドを定義します。統合タイプとしてAWSを選択し、サービスとしてAmazon DynamoDBを指定します。GetReviewメソッドに対してAPI Gatewayのキャッシュ機能を有効化します。
解説
要件(「レビュー投稿」機能の数千件規模の同時処理能力と、「レビュー取得」機能の低遅延応答)に基づき、各選択肢を検討します。 選択肢A: 「レビュー投稿」機能については、Auto ScalingグループとApplication Load Balancerを備えたAmazon ECSクラスターは、可変かつ大規模なトラフィックに対応する優れた設計です。しかし、レビューをAmazon S3バケットに保存するのは不適切です。S3は耐久性の高いオブジェクトストレージ向けに設計されており、数千件もの同時書き込みのような高スループット・低遅延の書き込み操作には最適ではありません。 「レビュー取得」機能については、S3バケットからレビューをクエリすると、特にレビュー数が増加した場合に比較的高い遅延が発生します。S3は、商品IDに基づいて複数の関連オブジェクトを高速に取得するためのデータベースではありません。したがって、この選択肢は要件を満たしません。 選択肢B: 「レビュー投稿」機能については、単一のAmazon EC2インスタンスで数千件もの同時レビュー投稿を処理するのは、スケーラブルな設計ではありません。単一インスタンスはCPU・メモリ・ネットワーク帯域などのリソースに制限があり、高負荷時にすぐにボトルネックになります。 「レビュー取得」機能については、インスタンスストアボリュームへの保存も問題があります。インスタンスストアボリュームは一時的であり、インスタンスの停止または終了時にデータが失われます。また、多数のレビューがある状況で、低遅延での複数回のクエリ応答を提供する設計でもありません。したがって、この選択肢も要件を満たしません。 選択肢C: 「レビュー投稿」機能については、Amazon API Gateway REST APIのSubmitReviewメソッドをAmazon DynamoDBと統合するのは非常に適切です。DynamoDBは、完全マネージド型のNoSQLデータベースサービスであり、数千件もの同時書き込みを容易に処理できます。水平方向に自動スケール可能であり、高スループットのワークロードに最適です。 「レビュー取得」機能については、API GatewayとDynamoDBを統合したGetReviewメソッドにAPI Gatewayキャッシュを有効化することで、応答遅延を大幅に削減できます。キャッシュにより、頻繁にアクセスされるデータ(例:特定商品のレビュー)がメモリ上に保持され、データベースへの再クエリなしで高速に応答可能です。この選択肢は、「レビュー投稿」の高同時実行性と「レビュー取得」の低遅延という両要件を満たします。 選択肢D: 「レビュー投稿」機能については、各レビュー投稿ごとにAWS Step Functionsを用いるのは過剰設計です。Step Functionsは、複数ステップ・依存関係のある複雑なワークフローのオーケストレーションに適しており、単純なレビュー投稿というユースケースには不必要です。また、AWS Lambda関数経由でAmazon ElastiCache(Redis OSS)クラスターに書き込む方法は、DynamoDBと比較して、大量の同時書き込みに対するコスト効率やスケーラビリティの面で劣ります。 「レビュー取得」機能については、ElastiCacheクラスターからのクエリは低遅延を実現できますが、「レビュー投稿」側の設計が非効率であるため、選択肢Cほど最適とは言えません。したがって、この選択肢は選択肢Cほど要件を満たしません。 以上より、要件を最もよく満たすソリューションは選択肢Cです。