Q15 — AWS SAA-C03 第8章
第 15/65 問 | ← 第8章
Q510. ある企業がAWS上にWebアプリケーションを展開しています。バックエンドデータベースにはAmazon RDS for MySQLを使用しており、プライマリDBインスタンスと、スケーリング要件を満たすための5つの読み取り専用レプリカ(read replica)が構成されています。これらの読み取り専用レプリカは、プライマリDBインスタンスとの遅延(レプリケーションラグ)が1秒以内に収まらなければなりません。また、データベースでは定期的にストアドプロシージャが実行されます。Webサイトのトラフィックが増加するにつれ、ピーク時の負荷期間において、読み取り専用レプリカのレプリケーションラグがさらに大きくなっています。ソリューションアーキテクトは、このレプリケーションラグを可能な限り短縮する必要があります。また、アプリケーションコードへの変更を最小限に抑え、継続的な運用オーバーヘッドも最小限に抑える必要があります。これらの要件を満たすソリューションはどれですか?
- A. データベースをAmazon Aurora MySQLに移行します。読み取り専用レプリカをAurora Replicasに置き換え、Aurora Auto Scalingを設定します。ストアドプロシージャをAurora MySQLのネイティブ関数に置き換えます。 ✓
- B. Amazon ElastiCache for Redisクラスターをデータベースの前に配置します。アプリケーションを変更して、データベースへのクエリ実行前にキャッシュを参照するようにします。ストアドプロシージャをAWS Lambda関数に置き換えます。
- C. データベースをAmazon EC2インスタンス上で実行されるMySQLデータベースに移行します。すべてのレプリカノードには、大規模なコンピュート最適化EC2インスタンスを選択します。ストアドプロシージャはEC2インスタンス上で維持します。
- D. データベースをAmazon DynamoDBに移行します。必要なスループットをサポートするために多数の読み取りキャパシティユニット(RCU)をプロビジョニングし、オンデマンドキャパシティスケーリングを設定します。ストアドプロシージャをDynamoDB Streamsに置き換えます。
正解: A. データベースをAmazon Aurora MySQLに移行します。読み取り専用レプリカをAurora Replicasに置き換え、Aurora Auto Scalingを設定します。ストアドプロシージャをAurora MySQLのネイティブ関数に置き換えます。
解説
Amazon Aurora MySQLは、RDS for MySQLと比較して大幅に改善されたレプリケーション性能を提供し、通常はミリ秒単位の低遅延レプリケーションを実現します。Aurora Replicasは、共有ストレージアーキテクチャにより、ログベースではなくデータページレベルでレプリケーションを行うため、従来のMySQLのバイナリログレプリケーションよりもはるかに高速です。これにより、1秒以内のレプリケーションラグという要件を確実に満たせます。Aurora Auto Scalingは、読み取り負荷に応じてAurora Replicasの数を自動調整し、ピーク時のラグ増加を抑制します。また、AuroraはMySQL互換であり、既存のアプリケーションコードやストアドプロシージャの大部分を変更せずに利用可能ですが、選択肢Aでは「ストアドプロシージャをAurora MySQLネイティブ関数に置き換え」とありますが、これは必須ではなく、実際にはAuroraでもMySQL互換のストアドプロシージャがサポートされます(ただし、一部の制限あり)。他の選択肢は問題を根本解決しません:Bはキャッシュで読み取り負荷を軽減しますが、レプリケーションラグそのものを解消せず、ストアドプロシージャの置き換えもアプリケーション変更を伴います;CはEC2上のMySQLでは、ネットワーク・I/O・CPUボトルネックにより、依然としてレプリケーションラグが発生しやすく、運用オーバーヘッド(OS管理、パッチ適用、バックアップなど)が大幅に増加します;DはDynamoDBはリレーショナルデータベースではなく、ストアドプロシージャやトランザクション、JOINなどの機能を欠くため、既存のMySQLベースのアプリケーションへの移行には多大なコード変更と再設計が必要であり、要件(アプリケーションコード変更の最小化)に反します。したがって、最も適切な選択肢はAです。