AWS Compute Optimizer

機械学習で CloudWatch メトリクスを分析し、EC2・EBS・Lambda・ECS のリソースサイズを最適化する推奨を提示するサービス

概要

AWS Compute Optimizer は、CloudWatch から収集した CPU 使用率・メモリ使用率・ネットワーク I/O などのメトリクスを機械学習モデルで分析し、EC2 インスタンス・EBS ボリューム・Lambda 関数・ECS タスクに対するライトサイジング推奨を提示するサービスです。過剰にプロビジョニングされたリソースを検出してコスト削減の機会を示すだけでなく、リソース不足によるパフォーマンス低下のリスクも警告します。さらに Savings Plans や Reserved Instances の購入推奨も提供し、オンデマンド料金からの割引率を具体的な金額で試算できます。

ML モデルが過去のメトリクスから最適解を導く仕組み

Compute Optimizer の推奨精度を支えているのは、CloudWatch メトリクスの時系列データを入力とする機械学習モデルです。デフォルトでは過去 14 日間のメトリクスを分析しますが、Enhanced Infrastructure Metrics を有効にすると最大 93 日間のデータを参照でき、月末のバッチ処理や四半期決算時のスパイクといった長期的な負荷パターンも考慮した推奨が得られます。EC2 インスタンスの場合、CPU 使用率だけでなくメモリ使用率 (CloudWatch Agent 経由)、ディスク I/O、ネットワーク帯域を総合的に評価し、同等以上のパフォーマンスを維持しつつコストが低いインスタンスタイプを提案します。たとえば m5.xlarge で CPU 使用率が常時 15% 以下なら m5.large へのダウンサイズを推奨し、年間の削減額を具体的に表示します。推奨には Over-provisioned (過剰)、Under-provisioned (不足)、Optimized (最適) の 3 段階のラベルが付与されるため、対処の優先順位を直感的に判断できます。

Lambda と ECS のライトサイジングで見落としがちなポイント

Compute Optimizer は EC2 だけでなく Lambda 関数のメモリ設定と ECS on Fargate のタスクサイズにも推奨を出します。Lambda の場合、メモリを増やすと比例して CPU パワーも割り当てられるため、メモリ使用量が少なくても CPU バウンドな処理ではメモリ増加がレイテンシ改善とコスト削減の両方に効く場合があります。Compute Optimizer はこの特性を踏まえ、実行時間とメモリ使用量の両面から最適なメモリサイズを提案します。ECS タスクについては、Fargate で設定した vCPU とメモリの組み合わせに対して、実際の使用率が低ければ小さいタスクサイズへの変更を推奨します。Azure にも同様のリソース最適化機能として Azure Advisor のコスト推奨がありますが、Compute Optimizer のように ML モデルで長期間のメトリクスを分析する仕組みは Azure Advisor にはなく、閾値ベースの単純な判定にとどまります。クラウドコスト管理の書籍 (Amazon) では、ライトサイジングの判断基準が体系的に整理されています。

Savings Plans 推奨と組織全体への展開

Compute Optimizer は個々のリソースのサイジングだけでなく、Savings Plans の購入推奨も提供します。過去の使用パターンから 1 年または 3 年のコミットメント期間ごとに最適な Savings Plans の金額を試算し、オンデマンド料金と比較した削減率を表示します。Organizations と連携すれば、管理アカウントから組織内の全メンバーアカウントの推奨を一括で確認でき、アカウントごとに個別にオプトインする手間が省けます。実務上の注意点として、Compute Optimizer の推奨はあくまで過去のメトリクスに基づく予測であり、将来のワークロード変更 (新機能リリースによるトラフィック増加、サービス廃止によるリソース削減など) は考慮されません。推奨を適用する前に、直近のロードマップや計画中のアーキテクチャ変更を確認し、推奨が妥当かどうかをチームで判断するプロセスを設けることが重要です。また、推奨の適用後は CloudWatch ダッシュボードでパフォーマンスメトリクスを 1-2 週間モニタリングし、問題がないことを確認してから次のリソースに着手する段階的なアプローチが安全です。

共有するXB!