[アップデート] AWS Compute Optimizer が ECS (Fargate) サービス環境でサポートされるようになりました
こんにちは!AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。
ECS on Fargate 環境で Compute Optimizer がサポートされるようになりました。
今回のアップデートでは ECS サービスで稼働しているタスクに対し、 CPU とメモリの推奨事項を Compute Optimizer で表示できるようになりました。
ドキュメントや公式ブログを確認する限り、一部制約もあったためまとめてみようと思います。詳しくは一次情報をご覧いただければと思います。
先に結論
- CPU, メモリの推奨スペック、推奨スペック適用後のコストメリット、パフォーマンスリスクを分析
- ECS サービスで起動しているタスクに対して機能提供
- スタンドアロンタスクに対しては対象外(ECS サービス配下ではないため)
- EKS on Fargate も対象外
- サービスに対しステップスケーリングを利用している場合は対象外
- サービスに対しターゲット追跡スケーリングを利用している場合は一部制約事項あり
- CPU に対してターゲット追跡スケーリングを行っている場合はメモリのみ推奨値を表示
- メモリに対してターゲット追跡スケーリングを行っている場合は CPU のみ推奨値を表示
- 推奨事項には過去 14 日間で 24 時間以上のメトリクスデータが必要
Compute Optimizer とは
Compute Optimizer とは、 AWS リソースのコンピューティング設定(インスタンスタイプ、インスタンスサイズ)と実際の使用率を機械学習を用いて分析するサービスです。
コンピューティング設定に対して、実際に利用された使用率をもとに、適切なプロビジョニングかどうかの判定を行うことができます。
また、予測使用率を示すグラフも提供しており、コストを削減やワークロードのパフォーマンス向上に役立つサービスです。無料なのでぜひ有効化してご利用いただくのがオススメです。
何が変わったのか
新たに ECS on Fargate 環境もサポートされ以下のサポート状況にアップデートされました。
- Amazon Elastic Compute Cloud (Amazon EC2) インスタンス
- Amazon EC2 Auto Scaling グループ
- Amazon Elastic Block Store (Amazon EBS) ボリューム
- AWS Lambda 関数
- [NEW] AWS Fargate の Amazon Elastic Container Service (Amazon ECS) サービス
何がわかるのか
今回の ECS on Fargate 環境の場合、 Compute Optimizer は次の情報を提供します。
- Finding classifications : 検出のクラス分け(結論どうだったのかを表示)
- Finding reasons : 推奨理由(カイゼンできる理由を表示)
- Estimated monthly savings : 月間の推定節約額
- Savings opportunity : Estimated monthly savings のパーセント表記
- Current performance risk : 需要に対しての供給可能性(低いほど良い)
AWS Compute Optimizer launches support for Amazon ECS services on AWS Fargate より画像引用
各項目について、さらに深掘りしていきましょう。
Finding classifications
Finding classifications では、サービスで動いているタスクが最適化されているのかどうかを確認できます。
判定基準は以下の 3 つで構成されており、「結論どうだったのか」を確認したい場合に適しています。
- Under-provisioned
- Amazon ECS サービスのメモリまたは CPU がプロビジョニング不足
- Over-provisioned
- Amazon ECS サービスのメモリまたは CPU が過剰なプロビジョニング
- Optimized
- Amazon ECS サービスのメモリと CPU の両方が適切なプロビジョニング
Finding reasons
Finding reasons では Finding classifications で Under-provisioned
または Over-provisioned
だった場合の詳細を確認できます。
以下の 4 つの理由の最大 2 つの組み合わせ、またはどれかが表示されます。
- CPU over-provisioned
- 過去に記録された ECS サービスの
CPUUtilization
メトリクスを分析 - CPU の過剰プロビジョニングを判定
- 過去に記録された ECS サービスの
- CPU under-provisioned
- 過去に記録された ECS サービスの
CPUUtilization
メトリクスを分析 - CPU のプロビジョニング不足を判定
- 過去に記録された ECS サービスの
- Memory over-provisioned
- 過去に記録された ECS サービスの
MemoryUtilization
メトリクスを分析 - メモリの過剰プロビジョニングを判定
- 過去に記録された ECS サービスの
- Memory under-provisioned
- 過去に記録された ECS サービスの
MemoryUtilization
メトリクスを分析 - メモリのプロビジョニング不足を判定
- 過去に記録された ECS サービスの
Estimated monthly savings & Savings opportunity
Compute Optimizer より推奨された CPU, メモリサイズにタスクを変更した場合の節約可能な料金を予測します。ECS サービスの稼働時間数に基づいて、パブリックオンデマンド料金で計算されます。
Current performance risk
ワークロードの需要に対しての供給可否も分析してくれるみたいです。すごい(小並感)
Very low, Low, Medium, High で判定し、低いほど常に需要に対して十分な機能の提供ができていることを意味します。
Compute Optimizer コンソールも、現在のパフォーマンスリスクが高く、コスト削減の機会があるものを優先して表示する仕様のため、「優先度」のような立ち位置とも捉えられます。
制約事項
Compute Optimizer が ECS on Fargate 環境でできることについてご紹介してきました。
いくつか制約事項があるため、触れていきたいと思います。
ECS サービスが対象
今回のアップデートは ECS サービスで起動しているタスクが対象です。
そのため ECS サービスに属さないスタンドアロンタスク、 EKS on Fargate 環境は対象外です。
スケーリングポリシーを設定している場合
ECS on Fargate で起動しているタスクは、 CloudWatch Alarm と Application Auto Scaling を組み合わせることで、タスクのオートスケーリングを実現できます。
オートスケーリングで使用するスケーリングポリシーによって、 Compute Optimizer の利用可否が異なるため注意が必要です。
ステップスケーリング
ステップスケーリングポリシーは、特定のメトリクスのしきい値に基づいて、サービスが実行するタスク数を増減させるポリシーです。
ステップスケーリングを利用している場合、残念ながら Compute Optimizer の推奨事項を利用することができません。
・No step scaling policy is attached.
Requirements for Amazon ECS services on Fargateより引用
ターゲット追跡スケーリング
ターゲット追跡スケーリングポリシーは、特定のメトリクスでターゲット値を定め、ターゲット値に近づくようにサービスが実行するタスク数を増減させるポリシーです。
ターゲット追跡スケーリングを利用している場合、ターゲット値を定めたメトリクスに応じて利用可否がさらに異なります。
スケーリングに CPU のメトリクスを利用している場合、 Compute Optimizer はメモリの推奨事項のみ分析します。スケーリングに メモリ のメトリクスを利用している場合、 Compute Optimizer は CPU の推奨事項のみ分析します。
If a target tracking policy is attached to the service’s CPU only, Compute Optimizer only generates memory size recommendations. Or, if a target tracking policy is attached to the service’s memory only, Compute Optimizer only generates CPU size recommendations.
Requirements for Amazon ECS services on Fargateより引用
If a target tracking policy is on the service’s CPU only, Compute Optimizer only generates memory size recommendations. Or, if a target tracking policy is on the service’s memory only, Compute Optimizer only generates CPU size recommendations.
Compare current settings with recommended task sizeより引用
過去 14 日以内に 24 時間以上のメトリクスデータ
Compute Optimizer は過去の利用率やメトリクスに基づき、推奨事項を分析するサービスです。
そのため、過去 14 日間に少なくとも 24 時間分の CloudWatch と Amazon ECS の利用状況メトリクスが存在する必要があります。
Your services have at least 24 hours of CloudWatch and Amazon ECS utilization metrics in the past 14 days.
Requirements for Amazon ECS services on Fargateより引用
参考
まとめ
以上、「Compute Optimizer が ECS (Fargate) サービス環境でサポートされるようになりました」でした。
制約事項に引っ掛からなければ、無料のサービスなので、ぜひお試しいただければと思いました。
以前からドキュメントでは、ターゲット追跡ポリシーの利用が勧められていましたが、今回のアップデートでより注目されそうです。
以上、AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!