Q42 — AWS SAA-C03 第16章
第 42/100 問 | ← 第16章
Q1242. ある企業が、AWS上でAmazon RDSをバックエンドデータベースとして使用するサーバーレスアプリケーションを運用しています。このアプリケーションは、予測できないトラフィックの急増を時折経験します。トラフィックがピークに達すると、アプリケーションがデータベースへの接続を頻繁に開閉し、その結果、データベースからエラーが返される、あるいは接続数が枯渇するといった問題が発生しています。企業は、アプリケーションが常にスケーラブルかつ高可用性であることを保証する必要があります。これらの要件を満たす解決策として、アプリケーションコードを一切変更せずに実現できるものはどれですか?
- A. RDSデータベースのパラメータグループで、最大接続数を増加させます。
- B. RDSデータベースインスタンスに対してMulti-AZ展開を有効化し、接続管理を処理できるようにします。
- C. サーバーレスアプリケーションとAmazon RDSの間にAmazon RDS Proxyを導入します。 ✓
- D. ピーク時のトラフィック負荷下でもデータベースが高可用性を維持できるよう、Amazon RDS向けにリザーブドインスタンスを購入します。
正解: C. サーバーレスアプリケーションとAmazon RDSの間にAmazon RDS Proxyを導入します。
解説
この企業のサーバーレスアプリケーションでは、予測不能なトラフィック急増により、データベース接続の過剰な開閉(connection churn)や接続数の枯渇が発生しており、結果としてエラーが多発しています。課題は、アプリケーションコードを変更せずに、スケーラビリティと高可用性を確保することです。主な課題は以下の3点です:(1)トラフィックピーク時に接続数が枯渇すること、(2)接続の頻繁な開閉によるパフォーマンス劣化、(3)コード変更なしでのスケーラビリティ・高可用性の確保です。各選択肢の検討:A:パラメータグループで最大接続数を増やすと、一時的に制限緩和は可能ですが、接続の効率的再利用や接続チャーンの根本原因には対処できません。また、RDSにはMySQLなどでは約16,000というハードリミットがあり、単なる上限引き上げは長期的な解決策になりません。B:Multi-AZ展開は障害発生時のフェイルオーバーによる高可用性を提供しますが、接続管理(例:コネクションプーリング)や接続数枯渇防止には寄与しません。したがって、本質的な課題とは無関係です。C:Amazon RDS Proxyを導入すると、アプリケーションとRDSの間に透過的なコネクションプール層が追加され、接続の開閉頻度を大幅に削減できます。これにより、接続数の枯渇を防ぎ、スケーラビリティと高可用性(Multi-AZ RDSとの連携もサポート)を同時に実現します。さらに、アプリケーション側のコード変更は一切不要です。D:リザーブドインスタンスはコスト最適化のための機能であり、パフォーマンス向上や接続管理、高可用性の担保とは無関係です。高可用性はMulti-AZによって提供され、リザーブドインスタンスでは保証されません。結論として、最も適切な解決策はCです。RDS Proxyを選択すべき理由:(1)コネクションプーリングにより、接続の開閉オーバーヘッドを低減、(2)接続数制限に達することなくトラフィックピークに対応可能なスケーラビリティ、(3)Multi-AZ RDSとのシームレスな統合による高可用性、(4)アプリケーションコードの変更不要、(5)Lambdaなどサーバーレス環境における予測不能なワークロードに最適です。