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 のコスト推奨があります。
Savings Plans 推奨と組織全体への展開
Compute Optimizer は個々のリソースのサイジング推奨を提供し、Savings Plans の購入推奨は Billing and Cost Management コンソール (Cost Explorer) 側の機能です。これらの推奨は同コンソールの Savings Plans メニューから確認できます。Organizations と連携すれば、管理アカウントから組織内の全メンバーアカウントの推奨を一括で確認でき、アカウントごとに個別にオプトインする手間が省けます。実務上の注意点として、Compute Optimizer の推奨はあくまで過去のメトリクスに基づく予測であり、将来のワークロード変更 (新機能リリースによるトラフィック増加、サービス廃止によるリソース削減など) は考慮されません。推奨を適用する前に、直近のロードマップや計画中のアーキテクチャ変更を確認し、推奨が妥当かどうかをチームで判断するプロセスを設けることが重要です。また、推奨の適用後は CloudWatch ダッシュボードでパフォーマンスメトリクスを 1-2 週間モニタリングし、問題がないことを確認してから次のリソースに着手する段階的なアプローチが安全です。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。