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のネイティブ関数に置き換えます。

解説

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です。