DOP弾力性に優れたクラウドソリューション
ある企業のサーバーレスアプリケーションでは、AWS Lambda関数がAmazon RDS PostgreSQLインスタンスに直接接続しています。通常時は問題ありませんが、フラッシュセール開始直後にLambdaが500以上の同時実行数にスケールアウトすると、RDSが「FATAL: remaining connection slots are reserved for non-replication superuser connections」エラーを返してアプリケーション障害が発生しています。RDSインスタンスはdb.r5.2xlargeでmax_connectionsの上限に達しており、これ以上のスケールアップはコスト制約上困難です。
この問題を根本的に解決しながら高可用性を維持するために最も効果的な解決策はどれですか?
ALambdaのプロビジョニングされた同時実行数(Provisioned Concurrency)を設定してウォームスタートを確保し、コネクション確立のレイテンシーとオーバーヘッドを削減する
プロビジョニングされたProvisioned Concurrency は、コールドスタート対策であり接続数問題の解決にはなりません。
BRDSインスタンスをdb.r5.4xlargeにスケールアップしてmax_connections上限を増加させ、同時接続数を収容できるようにする
スケールアップRDS は、根本解決にはならずスケール限界と高コストの問題が残ります。
CAmazon RDS Proxyを導入してコネクションプールを管理し、Lambda関数はRDS Proxyエンドポイントに接続するよう変更する
✓ 正解
Amazon RDS Proxyはサーバーレス環境向けのフルマネージドコネクションプーリングサービス。大量のLambda同時実行からの接続要求を受け付け、RDSへの実際の接続数を大幅に削減します(多数のクライアント接続→少数のRDS接続に集約)。IAM認証やSecrets Managerとの統合により安全性も向上します。
DLambda関数のグローバルスコープでデータベース接続を初期化し、Execution Environmentの再利用によってコネクションを効率的に使い回す
グローバルスコープキャッシュLambda は、ベストプラクティスですが同時実行数が多い場合は依然として接続数上限を超えます。
解説
Amazon RDS Proxyはサーバーレス環境向けのフルマネージドコネクションプーリングサービス。大量のLambda同時実行からの接続要求を受け付け、RDSへの実際の接続数を大幅に削減します(多数のクライアント接続→少数のRDS接続に集約)。IAM認証やSecrets Managerとの統合により安全性も向上します。
選択肢AのプロビジョニングされたProvisioned Concurrency は、コールドスタート対策であり接続数問題の解決にはなりません。
選択肢BのスケールアップRDS は、根本解決にはならずスケール限界と高コストの問題が残ります。
選択肢DのグローバルスコープキャッシュLambda は、ベストプラクティスですが同時実行数が多い場合は依然として接続数上限を超えます。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →