Q57 — AWS SAA-C03 第3章
第 57/65 問 | ← 第3章
Q187. ある企業が、単一のAmazon EC2 On-Demand Instance上でウェブサイト分析アプリケーションをホストしています。この分析ソフトウェアはPHPで記述されており、MySQLデータベースを使用しています。分析ソフトウェア、PHPを提供するWebサーバー、およびデータベースサーバーのすべてが、同一のEC2インスタンス上で実行されています。アプリケーションは繁忙期にパフォーマンス劣化の兆候を示しており、5xxエラーが発生しています。企業は、アプリケーションをシームレスにスケールできるようにする必要があります。 これらの要件を最もコスト効率よく満たす解決策はどれですか?
- A. データベースをAmazon RDS for MySQL DBインスタンスに移行します。WebアプリケーションのAMIを作成し、そのAMIを使って2台目のEC2 On-Demand Instanceを起動します。Application Load Balancerを使用して、各EC2インスタンスへのトラフィックを分散させます。 ✓
- B. データベースをAmazon RDS for MySQL DBインスタンスに移行します。WebアプリケーションのAMIを作成し、そのAMIを使って2台目のEC2 On-Demand Instanceを起動します。Amazon Route 53のウェイト付きルーティングを使用して、2台のEC2インスタンス間でトラフィックを分散させます。
- C. データベースをAmazon Aurora MySQL DBインスタンスに移行します。EC2インスタンスを停止し、インスタンスタイプを変更するAWS Lambda関数を作成します。CPU使用率が75%を超えたときにLambda関数を呼び出すよう、Amazon CloudWatchアラームを設定します。
- D. データベースをAmazon Aurora MySQL DBインスタンスに移行します。WebアプリケーションのAMIを作成し、それを起動テンプレートに適用します。この起動テンプレートを使用してAuto Scalingグループを作成します。起動テンプレートをSpot Fleetで使用するよう設定します。Auto ScalingグループにApplication Load Balancerをアタッチします。
正解: A. データベースをAmazon RDS for MySQL DBインスタンスに移行します。WebアプリケーションのAMIを作成し、そのAMIを使って2台目のEC2 On-Demand Instanceを起動します。Application Load Balancerを使用して、各EC2インスタンスへのトラフィックを分散させます。
解説
アプリケーションのパフォーマンス劣化と5xxエラーの主な原因は、単一のEC2インスタンス上でWebサーバー・アプリケーション・データベースがすべて共存している「モノリシック構成」によるリソース競合です。まず、データベースをアプリケーションから分離(RDSまたはAurora)することで、スケーラビリティと可用性が向上します。次に、Webアプリケーション層のスケーリングには、負荷に応じて自動的にインスタンス数を増減させるAuto Scalingが必須です。Spot Fleetはコスト削減に有効ですが、アプリケーションの可用性を保証するにはOn-Demandインスタンスやスポットインスタンスの組み合わせ(Mixed Instances Policy)が推奨され、単独のSpot Fleet指定(オプションD)は中断リスクが高く、本番環境では不適切です。また、オプションCはインスタンスタイプの変更(サイズ変更)を試みていますが、これはダウンタイムを伴い、かつスケーリングではなく単一インスタンスの最適化であり、「シームレスなスケーリング」要件を満たしません。オプションAは、手動で2台目を追加し、固定数のスケーリング(スケールアウト)のみを提供するため、負荷変動に柔軟に対応できません。一方、オプションBのRoute 53ウェイト付きルーティングは、ロードバランシングではなくDNSベースのトラフィック分割であり、ヘルスチェックや動的なトラフィック分散ができないため、5xxエラー対策として不十分です。したがって、データベース分離+Auto Scaling+Application Load Balancerという、標準的かつ堅牢なスケーラブルアーキテクチャを提供するオプションAが、コスト効率と要件適合性の観点から最も適しています(ただし、DはSpot Fleetの記述が誤りのため除外)。なお、実際のベストプラクティスでは、Auto Scalingを導入すべきですが、選択肢の中で「最もコスト効率よく」かつ「シームレスなスケーリング」を実現する現実的で確実な選択肢はAです。