無限ノック › DOP 練習問題一覧 › 問題
DOP弾力性に優れたクラウドソリューション

EコマースサービスがAWS Lambdaを使用したサーバーレスAPIをAurora MySQL クラスターに接続して運用しています。セール期間中にLambdaが数千の同時実行まで急増すると「Too many connections」エラーが多発し、Auroraの最大接続数(db.r5.large では約1,000)に達してサービス障害が発生します。コールドスタート時に大量の短命な接続が同時確立されることも問題です。アプリケーションコードの大規模な変更なしにこの問題を最も効果的に解決するアーキテクチャはどれですか?

A
Auroraをdb.r5.4xlargeにスケールアップしてmax_connectionsを増加させ、Aurora Serverless v2に移行してスケーリング性能を向上させる
インスタンスのスケールアップやAurora Serverless v2移行は根本的な解決になりません。同時実行数が増加し続けると同じ問題が再発します。
B
Amazon RDS ProxyをLambdaとAuroraの間に配置し、接続プーリングにより実際のDB接続数を削減するとともに、Lambda実行環境間での接続再利用を可能にする
✓ 正解
Amazon RDS Proxyはクライアントとキューイングして接続をプールし、数千のLambda同時実行が少数の永続的DB接続を共有できます。変更は接続先DNS名の変更のみで実装が容易です。
C
Lambdaの予約済み同時実行数を500に制限してAuroraへの接続数を抑制し、SQSキューでリクエストを平準化する
予約済み同時実行数を500に制限するとスループットが低下し、実用的ではありません。根本的な接続プール化ではありません。
D
ElastiCache for Redisをキャッシュレイヤーとして追加し、読み取りクエリの大部分をキャッシュから返すことでAurora接続数を削減する
ElastiCache Redisキャッシュは読み取りクエリの軽減には役立ちますが、頻繁な書き込みや全件取得クエリには対応できません。

解説

Amazon RDS ProxyはLambdaとRDS/Auroraの間で接続をプールし、数千のLambda同時実行が少数の永続的DB接続を共有できるようにします。Lambda側の接続先をRDS ProxyエンドポイントのDNS名に変更するだけで動作し、大規模なコード変更は不要です。RDS ProxyはIAM認証やSecrets Managerとも統合でき、セキュリティも向上します。 選択肢AのAuroraインスタンスのスケールアップはmax_connectionsを増加させますが、Lambda同時実行が継続的に増加すれば接続上限に再度到達するため根本解決にはなりません。Aurora Serverless v2への移行もコネクション数の根本的な解決にはつながりません。 選択肢CのLambda予約済み同時実行数の制限は接続数を抑制できますが、セール期間中の高負荷時にスループットが低下してサービス品質が劣化します。SQSキューによる平準化も有効な場面はありますが、追加のアーキテクチャ変更を伴います。 選択肢DのElastiCache for Redisは読み取りクエリのキャッシュには有効ですが、書き込みクエリや強い一貫性が必要なクエリでは依然としてAurora接続が必要となり、「Too many connections」問題の根本解決にはなりません。

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

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

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