SAA高性能なアーキテクチャの設計
ある動画配信プラットフォームが AWS Lambda を使用した動画推薦エンジンを運用しています。ピーク時には最大 2,000 の Lambda インスタンスが同時実行され、それぞれが Amazon RDS PostgreSQL(db.r6g.2xlarge、最大接続数 1,000)に直接接続します。その結果、接続数上限を超えるエラーが多発し、推薦リクエストの約 15% が失敗しています。アプリケーションコードの変更を最小限に抑えながら、この問題を解決するにはどうすればよいですか?
ARDS Proxy を導入して接続プールを設定し、Lambda インスタンスと RDS 間の同時接続数を効率的に管理する
✓ 正解
RDS Proxy がアプリケーションと RDS の間で接続をプールし多重化することで、Lambda 大量同時実行による接続数超過を防ぐ。エンドポイント変更だけで導入できるため、アプリケーションコードの変更も最小限で済む。
BRDS インスタンスを db.r6g.8xlarge にスケールアップして最大接続数の上限を引き上げる
インスタンスをスケールアップしても 2,000 Lambda インスタンスからの同時接続には対応しきれず、インスタンスサイズの上限もある。接続数の上限引き上げではなく接続管理の仕組みを改善する必要がある。
CLambda の予約済み同時実行数を 1,000 に制限して RDS の最大接続数の範囲内に収める
Lambda の同時実行数を RDS の最大接続数に合わせて制限するとスループットが低下し、ピーク時のビジネス要件を満たせなくなる。接続プール管理で解決すべき問題を処理能力の削減で回避しているにすぎない。
DAurora PostgreSQL Serverless v2 に移行して ACU スケーリングにより最大接続数を動的に増加させる
Aurora Serverless v2 は ACU に比例した接続数上限を持つが、Lambda の各実行インスタンスが個別に接続を確立する仕組みは変わらない。高同時実行時の接続枯渇問題は解消されず、移行コストも大きい。
解説
Amazon RDS Proxy はデータベースとアプリケーションの間に設置するフルマネージドな接続プールサービスで、数千の Lambda 実行インスタンスからの接続リクエストを少数の RDS 物理接続に多重化する。Lambda 関数は RDS Proxy に接続し、Proxy が RDS への接続を再利用・共有するため、RDS が受け取る同時接続数を大幅に削減できる。接続エンドポイントを Proxy に変更するだけで導入でき、アプリケーションコードの変更は最小限で済む。
選択肢B の RDS インスタンススケールアップは最大接続数を増やせるが、2,000 Lambda インスタンスが同時に接続を開く根本原因は解決しない。インスタンスサイズにも上限があるため抜本的な解決策にならない。
選択肢C の Lambda 予約済み同時実行数の制限はスループット低下を招き、ピーク時の処理能力を犠牲にするため要件を満たさない。
選択肢D の Aurora PostgreSQL Serverless v2 は ACU スケーリングで最大接続数が増えるが、Lambda の各実行インスタンスが個別接続を開く問題は解消されない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →