[アップデート] AWS Compute Optimizer が ECS (Fargate) サービス環境でサポートされるようになりました

Compute Optimizer が ECS (Fargate) サービス環境でサポートされるようになりました。タスクのオートスケーリング利用時に制約事項があったため深掘りしてみました。
2022.12.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!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 : 需要に対しての供給可能性(低いほど良い)

ComputeOptimizerFargate

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 の過剰プロビジョニングを判定
  • CPU under-provisioned
    • 過去に記録された ECS サービスのCPUUtilizationメトリクスを分析
    • CPU のプロビジョニング不足を判定
  • Memory over-provisioned
    • 過去に記録された ECS サービスのMemoryUtilizationメトリクスを分析
    • メモリの過剰プロビジョニングを判定
  • Memory under-provisioned
    • 過去に記録された ECS サービスのMemoryUtilizationメトリクスを分析
    • メモリのプロビジョニング不足を判定

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_)でした!