無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

LambdaからAmazon RDS(PostgreSQL)に直接接続するサーバーレスAPIがあります。トラフィックのスパイク時に`FATAL: remaining connection slots are reserved`エラーが発生し、データベースが一時的に応答できなくなっています。CloudWatchのRDS `DatabaseConnections`メトリクスを確認すると、最大接続数の上限に達していました。この問題を根本的に解決するための最も適切なアプローチはどれですか?

A
Lambdaの`reserved concurrency`を低い値に設定して同時実行数を制限し、データベースへの接続数を強制的に抑制する
Lambdaのreserved concurrencyを低く設定すれば接続数は減りますが、トラフィックスパイク時のアプリケーションスループットが制限されスケーラビリティを犠牲にした対症療法です。根本的な接続管理の改善にはなりません。
B
RDSのDBパラメータグループで`max_connections`を最大値に増やし、より多くの接続を処理できるインスタンスタイプにアップグレードする
RDSのmax_connections増加やインスタンスアップグレードは一時的な対症療法です。Lambda関数がさらにスケールすれば再び上限に達します。インスタンスタイプのアップグレードはコストも増加し、根本的な解決策ではありません。
C
Lambda関数をコンテナイメージ化してECS Fargateに移行し、タスク数を制御することでRDSへの接続数を管理する
ECS Fargateへの移行はアーキテクチャの大規模な変更を必要とし、コンテナ化・タスク定義・サービス設定など追加の工数が発生します。Amazon RDS Proxyというマネージドサービスで解決できる問題に対して過剰な変更です。
D
Amazon RDS Proxyを導入して接続プーリングを有効化し、Lambdaのreserved concurrencyはアプリケーションの要件に合わせて設定する
✓ 正解
Amazon RDS Proxyは接続プーリングにより、多数のLambda関数から来る接続要求をRDSへの少数の持続的接続に多重化します。Lambdaのreserved concurrencyはスループット要件に合わせて設定でき、スケーラビリティを維持しながら接続枯渇問題を根本的に解決できます。

解説

Amazon RDS ProxyはLambdaとRDSの間に接続プールを提供するマネージドサービスです。Lambda関数はスケールアウト時に多数のデータベース接続を新規作成しようとしますが、RDS Proxyがこれをプールして多重化することで、RDSへの実接続数を大幅に削減できます。Lambdaのreserved concurrencyはアプリケーションのスループット要件に合わせて設定できるため、スケーラビリティを犠牲にせずに接続枯渇問題を根本的に解決できます。RDS ProxyはIAM認証やSecrets Managerとの統合もサポートし、セキュリティも向上します。 選択肢AのLambdaのreserved concurrencyを低く設定する方法は接続数を抑制できますが、トラフィックスパイク時のスループットが制限されスケーラビリティを犠牲にするため、根本的な解決策ではありません。 選択肢BのRDSのmax_connections増加とインスタンスアップグレードは一時的な対症療法であり、Lambdaがさらにスケールすれば再び上限に達するため根本的な解決にはなりません。 選択肢CのECS Fargateへの移行は大幅なアーキテクチャ変更を伴い、Amazon RDS Proxyというマネージドサービスで解決できる問題に対して過剰な対応です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る