Q41 — AWS SAA-C03 第6章
第 41/65 問 | ← 第6章
Q406. 電子商取引企業が、Amazon API GatewayおよびAWS Lambda関数を用いた注文処理アプリケーションを運用しています。このアプリケーションは、Amazon Aurora PostgreSQLデータベースにデータを保存しています。最近のセールイベント中に、顧客注文数が急増しました。その結果、一部の顧客がタイムアウトを経験し、その注文がアプリケーションによって処理されませんでした。ソリューションズアーキテクトは、多数のオープン接続によりデータベースのCPU使用率およびメモリ使用率が高くなっていたことを特定しました。ソリューションズアーキテクトは、アプリケーションへの変更を最小限に抑えつつ、これらのタイムアウトエラーを防止する必要があります。これらの要件を満たすソリューションはどれですか?
- A. Lambda関数に対してプロビジョニング済み同時実行数を設定します。データベースを複数のAWSリージョンで動作するグローバルデータベースに変更します。
- B. Amazon RDS Proxyを使用してデータベースのプロキシを作成します。Lambda関数を変更し、データベースのエンドポイントではなくRDS Proxyのエンドポイントを使用するようにします。 ✓
- C. 別のAWSリージョンにデータベースの読み取り専用レプリカを作成します。API Gatewayでクエリ文字列パラメータを活用してトラフィックを読み取り専用レプリカにルーティングします。
- D. AWS Database Migration Service (AWS DMS) を使用して、Aurora PostgreSQLからAmazon DynamoDBへデータを移行します。Lambda関数を変更し、DynamoDBテーブルを利用するようにします。
正解: B. Amazon RDS Proxyを使用してデータベースのプロキシを作成します。Lambda関数を変更し、データベースのエンドポイントではなくRDS Proxyのエンドポイントを使用するようにします。
解説
タイムアウトエラーの発生防止とデータベースにおける高CPU/高メモリ使用率の解消を図りながら、アプリケーションへの変更を最小限に抑えるには、Amazon RDS Proxyの導入が最も適しています。RDS Proxyは、データベース接続をプール・管理し、過剰な接続数による負荷集中(特にLambda関数からの短時間に多数の接続要求)を緩和します。これにより、データベースの接続数制限やリソース枯渇を防ぎ、タイムアウトを大幅に削減できます。また、Lambda関数側の変更は、接続先エンドポイントをRDS Proxyのエンドポイントに切り替えるだけという非常に軽微な修正で済み、要件である「アプリケーションへの最小限の変更」を完全に満たします。他の選択肢は、グローバルデータベース化(A)、マルチリージョン構成とAPI Gatewayのルーティング変更(C)、あるいはデータベースエンジンの全面的移行(D)といった、アプリケーションやインフラストラクチャに対する大規模かつ複雑な変更を伴うため、要件に合致しません。