Q42 — AWS DVA-C02 第3章

第 42/100 問 | ← 第3章

開発者は、インターネット接続デバイス上で実行されるアプリケーションを作成しています。このアプリケーションは、AWS Lambda関数としてデプロイされたRESTful APIにデータを送信します。アプリケーションは各APIリクエストに一意の識別子を割り当てます。アプリケーションからのAPIリクエスト量は、1日の任意の時点でランダムに増加する可能性があります。レート制限期間中、アプリケーションはリクエストの再試行が必要になる場合があります。APIは重複リクエストを処理できる必要がありますが、不整合やデータ損失を引き起こしてはなりません。

正解: B. Amazon DynamoDBテーブルを作成し、各リクエストの一意の識別子をテーブルに格納します。Lambda関数を変更して、リクエスト処理前にテーブル内の識別子をチェックします。

解説

A. Amazon DynamoDBテーブルを作成する: DynamoDBは、大量のデータの高速アクセスと処理を必要とするシナリオ(例:IoTデバイスが生成するリクエスト識別子)に適した、高度にスケーラブルで信頼性の高いNoSQLデータベースサービスです。 DynamoDBテーブル内に各リクエストの一意の識別子を格納することで、迅速な検索とチェックが可能です。 DynamoDBはアトミック操作をサポートするため、高並行状況下でも、複数のLambda関数インスタンスが同時にテーブルをチェック・更新してもデータ不整合が発生しません。 B. Lambda関数を変更する: Lambda関数は、リクエスト処理前にDynamoDBテーブルをクエリし、リクエスト識別子が既に存在するかをチェックできます。 識別子が既に存在する場合、Lambda関数はクライアントエラー応答を返すか、重複リクエストを無視するなどの対応が可能です。 C. 高並行およびランダムなリクエスト増加への対応: DynamoDBは、高並行およびランダムなリクエスト増加を容易に処理できます。これは、完全マネージドサービスであり、自動スケーリングおよび高可用性を備えているためです。 一方、選択肢BのAmazon RDS for MySQLは、リクエスト識別子を格納できますが、サーバーレスアーキテクチャおよび自動スケーリングの利点を持たないため、DynamoDBほど適しておらず、データベースの保守・バックアップなど追加の管理作業が必要です。 選択肢CではDynamoDBを使用して識別子を格納していますが、重複リクエストに対してクライアントエラー応答を返すのは最適な手法ではなく、クライアント側の再試行を誘発し、システム負荷の増加や他の問題を引き起こす可能性があります。 したがって、総合的に判断すると、選択肢Aがこのシナリオに最も適しており、Lambda関数が重複リクエストを処理する際にデータ不整合やデータ損失を防ぎ、ランダムなリクエスト増加を効果的に処理できます。