Q50 — AWS SAP-C02 第2章

第 50/75 問 | ← 第2章

Q200. ある企業は、20個の重要なアプリケーションに関連するコストを管理するためにAWSへの移行を検討しています。これらのアプリケーションはJavaおよびNode.jsで記述されており、異なるインスタンスクラスターに分散して実行されています。企業は、単一のデプロイ手法を用いて標準化しつつ、コストを最小限に抑えることを求めています。大部分のアプリケーションは月末処理向けで、同時ユーザー数は少ないですが、例外的に他の時期にも実行されることがあります。アプリケーションの平均メモリ使用量は1 GB未満ですが、ピーク時の処理では最大5 GBに達するものもあります。中でも最も重要なアプリケーションは、複数のデータソースにアクセスするJava製の請求レポートであり、実行時間は数時間に及ぶことがあります。

正解: B. Amazon EC2上でAmazon ECSコンテナをデプロイし、メモリ使用率75%をトリガーとしたAuto Scalingを設定します。移行対象の各アプリケーションに対してECSタスクをデプロイし、ECSタスクスケーリングを有効にします。Amazon CloudWatchを用いてサービスおよびホストを監視します。

解説

選択肢Aは、各アプリケーションを個別のAWS Lambda関数としてデプロイすることを提案していますが、Lambda関数には最大メモリ制限(現在2.5 GB)があり、ピーク時に5 GBのメモリを必要とするアプリケーションには不適切です。したがって、コスト効率という観点から最適とは言えません。選択肢Cは、各アプリケーションごとにAWS Elastic Beanstalkをデプロイすることを提案していますが、これは追加の抽象化レイヤーを導入し、基盤となるインフラストラクチャに対する制御性を損なう可能性があり、コスト効率も必ずしも最適ではありません。選択肢Dは、すべてのアプリケーションを単一のEC2インスタンスクラスター上で共存させ、EC2 Auto ScalingおよびApplication Load Balancerを活用する方法です。これは機能的には可能ですが、複数のアプリケーションを1つのインスタンスで実行すると運用の複雑さが増し、柔軟性が低下するため、コスト効率という点では最適とは言えません。したがって、選択肢Bが、デプロイ手法の標準化とコスト最小化の両方を実現する最もコスト効率の高い解決策です。Amazon EC2上でAmazon ECSコンテナを実行し、メモリ使用率75%を基準としたAuto Scalingを設定することで、各アプリケーションに必要なリソースを確保しつつ無駄なリソース消費を抑えられます。また、各アプリケーションを個別のECSタスクとしてデプロイし、ECSタスクスケーリングを活用すれば、負荷に応じた効率的なリソース配分が可能です。さらに、Amazon CloudWatchによるサービスおよびホストの監視により、重要なジョブの完了確認や信頼性の確保も図れます。