コンピュートリソース最適化 - AWS Compute Optimizer による適正サイジング
AWS Compute Optimizer を使ったリソースの適正サイジングを解説。EC2・Lambda・EBS・ECS on Fargate の推奨事項、コスト削減効果の試算、導入手順を紹介します。
リソースの適正サイジングの重要性
クラウドリソースの過剰プロビジョニングは、最も一般的なコスト無駄の原因です。本番環境で m5.xlarge を使用しているが実際の CPU 使用率は平均 10% 以下、Lambda 関数に 1024 MB のメモリを割り当てているが実際の使用量は 200 MB 以下、gp2 ボリュームを使い続けているが gp3 に変更すれば 20% コスト削減できる、といったケースは非常に多く見られます。AWS Compute Optimizer は CloudWatch メトリクスを ML モデルで分析し、各リソースの最適な設定を推奨するサービスです。過去 14 日間 (拡張メトリクスでは最大 93 日間) の使用パターンを分析し、パフォーマンスを維持しながらコストを最適化する推奨事項を提示します。単純な CPU 使用率の閾値判定ではなく、CPU・メモリ・ネットワーク・ディスク I/O の複数メトリクスを総合的に評価するため、推奨の精度が高いのが特徴です。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
EC2 と Lambda の推奨事項
EC2 インスタンスの推奨では、現在のインスタンスタイプに対して最大 3 つの推奨オプションが提示されます。各オプションにはインスタンスタイプ、推定月額コスト、パフォーマンスリスク (Low/Medium/High) が含まれます。たとえば m5.xlarge (4 vCPU / 16 GB) を使用中で CPU 使用率が低い場合、m5.large (2 vCPU / 8 GB) へのダウンサイジングや、m7g.large (Graviton3) への移行が推奨されます。Graviton への移行推奨は Compute Optimizer の特徴的な機能で、ARM アーキテクチャへの移行によるコスト削減効果を具体的な金額で提示します。Lambda 関数の推奨では、メモリサイズの最適値を提示します。Lambda はメモリに比例して CPU が割り当てられるため、メモリの最適化はコストとパフォーマンスの両方に影響します。過剰なメモリ割り当ては直接的なコスト無駄になり、不足は実行時間の延長 (= コスト増) につながります。 ```bash # Compute Optimizer の有効化 aws compute-optimizer update-enrollment-status \ --status Active \ --region ap-northeast-1 # EC2 推奨事項の取得 aws compute-optimizer get-ec2-instance-recommendations \ --region ap-northeast-1 \ --query 'instanceRecommendations[].{Id:instanceArn,Finding:finding,Current:currentInstanceType,Recommended:recommendationOptions[0].instanceType}' ```
EBS と ECS の推奨事項
EBS ボリュームの推奨では、ボリュームタイプ、サイズ、IOPS、スループットの最適値を提示します。最も一般的な推奨は gp2 から gp3 への移行です。gp3 は gp2 と比較してベースラインで 20% 低コストであり、IOPS とスループットを独立して設定できるため、ワークロードに合わせた最適化が可能です。プロビジョンド IOPS (io1/io2) ボリュームでは、実際の IOPS 使用率に基づいて IOPS 値の削減を推奨する場合があります。ECS on Fargate の推奨では、タスク定義の CPU とメモリの最適値を提示します。Fargate タスクは CPU (0.25 〜 4 vCPU) とメモリ (0.5 〜 30 GB) の組み合わせで課金されるため、適正サイジングがコストに直結します。Compute Optimizer は各タスクの実際のリソース使用率を分析し、パフォーマンスを維持しながらコストを最小化する設定を推奨します。
導入と Organizations 統合
Compute Optimizer の有効化はアカウント単位で行い、有効化後 12 時間以内に推奨事項の生成が開始されます。基本機能は無料で、CloudWatch の標準メトリクス (5 分間隔) を使用して過去 14 日間のデータを分析します。拡張メトリクス (Enhanced Infrastructure Metrics) は有料オプションで、メモリ使用率の分析と最大 93 日間の分析期間を提供します。メモリ使用率は CloudWatch エージェントのインストールが必要ですが、EC2 の適正サイジングにおいて CPU だけでなくメモリも考慮できるため、推奨の精度が大幅に向上します。Organizations 統合により、管理アカウントから組織内の全アカウントの Compute Optimizer を一括で有効化し、推奨事項を集約できます。推奨事項は S3 にエクスポートでき、Athena や QuickSight で組織全体のコスト最適化レポートを作成できます。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ - Compute Optimizer の活用指針
AWS Compute Optimizer は、ML ベースの分析で EC2・Lambda・EBS・ECS on Fargate の適正サイジングを推奨するサービスです。基本機能は無料で利用でき、有効化するだけで推奨事項が自動生成されます。過剰プロビジョニングの検出によるコスト削減と、不足の検出によるパフォーマンス改善の両面で効果を発揮します。Trusted Advisor のコスト最適化チェックと組み合わせることで、リソースレベルの最適化 (Compute Optimizer) とアカウントレベルの最適化 (Trusted Advisor) を包括的にカバーできます。全 AWS アカウントで有効化することを推奨します。
AWS の優位点
- CloudWatch メトリクス (CPU、メモリ、ネットワーク、ディスク I/O) を ML で分析し、EC2・Lambda・EBS・ECS on Fargate の最適な設定を推奨
- 過剰プロビジョニング (Over-provisioned) と不足 (Under-provisioned) の両方を検出し、コスト削減とパフォーマンス改善の両面で推奨
- EC2 では最適なインスタンスファミリー・サイズ・世代を提案し、Graviton (ARM) への移行推奨も含む
- Lambda ではメモリサイズの最適値を推奨し、過剰なメモリ割り当てによるコスト無駄を削減
- EBS ではボリュームタイプ (gp3 vs gp2) と IOPS/スループットの最適値を推奨
- 基本機能は無料で利用可能。拡張メトリクス (メモリ使用率、3 か月の分析期間) は有料オプション
- Azure Advisor のサイジング推奨が CPU ベースの単純な閾値判定であるのに対し、Compute Optimizer は ML モデルで複数メトリクスを総合的に分析