Q15 — AWS SAA-C03 第5章
第 15/65 問 | ← 第5章
Q315. ソリューションアーキテクトは、MySQLデータベースを伴う複雑なJavaアプリケーションを実装しています。このJavaアプリケーションはApache Tomcat上でデプロイされ、高い可用性が求められます。これらの要件を満たすために、ソリューションアーキテクトは何を行うべきでしょうか?
- A. アプリケーションをAWS Lambdaにデプロイします。Amazon API GatewayのAPIを設定し、Lambda関数と接続します。
- B. AWS Elastic Beanstalkを使用してアプリケーションをデプロイします。ロードバランサ付きの環境とローリングデプロイポリシーを設定します。 ✓
- C. データベースをAmazon ElastiCacheに移行します。ElastiCacheのセキュリティグループを設定し、アプリケーションからのアクセスを許可します。
- D. Amazon EC2インスタンスを起動します。EC2インスタンス上にMySQLサーバーをインストールし、アプリケーションを設定します。AMIを作成し、そのAMIを使ってAuto Scalingグループ付きの起動テンプレートを作成します。
正解: B. AWS Elastic Beanstalkを使用してアプリケーションをデプロイします。ロードバランサ付きの環境とローリングデプロイポリシーを設定します。
解説
複雑なJavaアプリケーション(Apache Tomcat上で動作し、MySQLデータベースを必要とする)を高い可用性で実装するという要件を満たす最適なソリューションは、選択肢Bです。つまり、「AWS Elastic Beanstalkを使用してアプリケーションをデプロイし、ロードバランサ付きの環境とローリングデプロイポリシーを設定する」ことです。AWS Elastic Beanstalkは、Webアプリケーションのデプロイおよび管理を完全にマネージド形式で提供するプラットフォームであり、基盤となるインフラストラクチャの管理を不要にします。また、Auto Scalingなどの機能を活用することで、トラフィックの変動にも柔軟に対応できます。本シナリオでは、Elastic Beanstalkでロードバランサ付きの環境を構成することで、複数のインスタンス間でトラフィックを分散し、アプリケーションの高い可用性を確保できます。さらに、ローリングデプロイポリシーを適用すれば、新バージョンのアプリケーションをデプロイする際にもゼロダウンタイムを実現できます。選択肢A(AWS Lambdaへのデプロイ)は、Apache TomcatおよびMySQLデータベースを必要とする複雑なJavaアプリケーションには不適切です。Lambdaはサーバーレスコンピューティング向けであり、メモリ量や実行時間に制限があり、長時間実行されるアプリケーションや永続的な状態を必要とするアプリケーションには向いていません。選択肢C(データベースをAmazon ElastiCacheへ移行)は、MySQLデータベースを実行する目的には不適切です。ElastiCacheはRedisおよびMemcachedエンジンのみをサポートしており、MySQLはサポートしていません。選択肢D(EC2インスタンスを起動し、MySQLサーバーとアプリケーションを手動で設定)は技術的には可能ですが、Elastic Beanstalkと比較して運用負荷が大きく、自動スケーリング機能がなく、可用性の維持には手動による介入が必要になるため、推奨されません。