無限ノック › SAA 練習問題一覧 › 問題
SAA弾力性に優れたアーキテクチャの設計

あるEコマース企業が、AWS Lambda関数(最大同時実行数1,000)とAmazon RDS for MySQL(db.r6g.xlarge)を組み合わせたサーバーレスAPIを運用しています。セール期間中にLambdaの同時実行数が急増し、RDSの接続上限(max_connections)に達して「Too many connections」エラーが頻発しています。RDSインスタンスのアップグレードは予算上不可能であり、アーキテクチャをできるだけシンプルに変更してこの問題を解決したいと考えています。最も適切な解決策はどれですか?

A
Amazon ElastiCache for Redisをコネクションプールとして前段に追加し、RDSへの直接接続数を削減する
Amazon ElastiCache for Redisはインメモリキャッシュサービスであり、データベースコネクションプール機能は提供しません。RDSへの接続数は減りません。
B
Amazon RDS Proxyを導入し、Lambda関数がRDS Proxyのエンドポイントに接続するよう変更する
✓ 正解
Amazon RDS Proxyは、RDS・Aurora向けのフルマネージドなデータベースプロキシサービスです。Proxyが少数の長寿命なデータベース接続をプールとして維持し、多数のLambda関数からの接続要求を多重化します。Lambda関数側の変更はエンドポイントURLをProxy用に切り替えるだけで、RDSインスタンスを変更せず「Too many connections」問題を解消できます。
C
Amazon RDS for MySQLをAmazon Aurora Serverless v2に移行して、接続数制限のないスケーリングに対応させる
Amazon RDS for MySQLをAmazon Aurora Serverless v2に移行する方法はコストと工数が大きく、根本原因(接続プール不足)の最もシンプルな解決策ではありません。
D
Amazon SQSキューをLambdaとRDSの間に挟み、処理を非同期化してRDSへの同時接続数を制御する
Amazon SQSキューをLambdaとRDSの間に挟み、処理を非同期化する方法はアーキテクチャの大幅な変更が必要で、リアルタイムレスポンスが必要なAPIには不向きです。

解説

Amazon RDS Proxyは、RDS・Aurora向けのフルマネージドなデータベースプロキシサービスです。Proxyが少数の長寿命なデータベース接続をプールとして維持し、多数のLambda関数からの接続要求を多重化します。Lambda関数側の変更はエンドポイントURLをProxy用に切り替えるだけで、RDSインスタンスを変更せず「Too many connections」問題を解消できます。 選択肢AのAmazon ElastiCache for Redisはインメモリキャッシュサービスであり、データベースコネクションプール機能は提供しません。RDSへの接続数は減りません。 選択肢CのAmazon RDS for MySQLをAmazon Aurora Serverless v2に移行する方法はコストと工数が大きく、根本原因(接続プール不足)の最もシンプルな解決策ではありません。 選択肢DのAmazon SQSキューをLambdaとRDSの間に挟み、処理を非同期化する方法はアーキテクチャの大幅な変更が必要で、リアルタイムレスポンスが必要なAPIには不向きです。

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

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

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