みなさん、こんにちはMSPの江崎です。

暦では秋なのに、気温は夏真っ盛りですね..そろそろ暦も令和版として改訂した方がいいのではないかと考える今日この頃です。

さて今回は地味だけど、いい仕事をする「AWS Compute Optimizer」の紹介です。花形サービスのようなキラキラ感は少ないけど実際にビジネスを継続していく上では非常に有用なサービスのひとつです。

1. はじめに

AWS Compute Optimizerは、機械学習を利用してクラウドリソースの使用状況を分析し、最適なリソース構成を提案してくれるサービスです。特にコスト削減やパフォーマンス向上を図りたい場合に効果的であり、インフラ運用の効率化に欠かせないツールです。本記事では、Compute Optimizerの基本的な仕組みや活用法、具体的なユースケース、そしておすすめの理由について解説します。

2. Compute Optimizerとは

Compute Optimizerは、AWSのCloudWatchメトリクスを活用して、リソースの使用率やパフォーマンスを解析します。対応するリソースは以下の通りです:

  • Amazon EC2 インスタンス
  • Amazon EC2 Auto Scaling グループ
  • Amazon EBS ボリューム
  • AWS Lambda 関数
  • Amazon ECS on AWS Fargate
  • 商用ソフトウェアライセンス(EC2 に関するライセンスのみ)

参考:AWS Compute Optimizer

利用料金は基本的に無料(※一部有料の拡張機能あり)で過去14日間のリソース使用データに基づき、過剰または不足しているリソースに対して最適化の提案を行います。推奨されるアクションには、リソースのサイズダウンやタイプの変更などが含まれ、コスト削減やパフォーマンス向上に貢献します。

3. Compute Optimizerの導入方法

Compute Optimizerの利用を開始するためには、AWSマネジメントコンソールでサービスを有効化します。設定は簡単で、以下のステップを踏むだけです:

  1. AWSマネジメントコンソールにサインイン。
  2. サービス検索で「Compute Optimizer」を選択。
  3. 有効化 または オプトイン」ボタンをクリックし、データ収集を開始。

その後、ダッシュボードにリソース最適化の提案が表示され、推奨されたアクションを確認できます。拡張機能以外は基本無料かつ設定自体もワンクリックで簡易に設定が可能です。

設定を開始すると以下のようなダッシュボードが表示されます。

節約の機会

パフォーマンスの向上の機会

レコメンデーション一覧

4. Compute Optimizerがおすすめの理由

Compute Optimizerを利用することで、運用において多くのメリットがあります。以下、具体的なおすすめポイントです。

  • コスト削減の具体的な提案:
    Compute Optimizerは、リソースの実際の使用状況を詳細に分析し、過剰なコストを生むリソースを特定します。例えば、CPU使用率が低いEC2インスタンスに対しては、より小さなインスタンスタイプへの変更を提案します。これにより、無駄なコストを削減できます。
  • 運用負荷の軽減:
    インフラ運用において、リソースの最適化はエンジニアにとって重要かつ時間のかかる作業です。Compute Optimizerはこのプロセスを自動化し、継続的に最適化の提案を行うため、手動での管理作業が大幅に削減できます。
  • 精度の高い提案:
    Compute Optimizerは、CloudWatchメトリクスを基に正確な分析を行うため、信頼性の高い最適化提案が得られます。具体的なメモリやCPU使用率、I/O性能の情報を基に、リソースの最適なサイズやタイプが提案されます。
  • 多様なリソースに対応:
    EC2インスタンスだけでなく、EBSボリュームやLambda関数、Auto Scalingグループなど、さまざまなAWSリソースに対して最適化提案を行います。これにより、幅広いリソースの最適化が可能となり、全体的なコスト効率を向上させます。
  • 継続的な最適化:
    Compute Optimizerは、リソース使用状況の変化に応じて継続的に最適化提案を行います。ビジネスの成長や変動するトラフィックに対応しながら、常に最適なリソース構成を維持することができます(過去14日間の数値のため注意)

5. Compute Optimizerのユースケース

1. EC2インスタンスの最適化

  • ユースケース: 負荷が変動するWebアプリケーションでは、最適なインスタンスタイプを選定するのが難しいことがあります。Compute Optimizerは、CPUやメモリ使用状況に基づいて、スケーリングダウンを提案します。
  • 例: 現在t3.largeインスタンスを使っているが、CPU使用率が低いため、Compute Optimizerがt3.mediumへの変更を推奨し、コストを削減できます。

2. EBSボリュームの最適化

  • ユースケース: 高いI/O性能を必要とするデータベースや、逆に過剰なI/O性能を持つEBSボリュームを最適化したい場合、Compute Optimizerは、リソースのI/Oパフォーマンスに基づき、適切なボリュームタイプの変更を提案します。
  • 例: gp2からgp3への変更を提案され、コストを削減できるケースがあります。

3. Lambda関数の最適化

  • ユースケース: サーバーレスアプリケーションで過剰にメモリを使用しているLambda関数に対して、最適なメモリサイズや実行時間のチューニングを提案します。
  • 例: メモリが不足している場合、より効率的な設定を推奨されパフォーマンス向上につながります。

6. Compute Optimizerと他のAWSサービスとの連携

Compute Optimizerは、他のAWSサービスとも連携して使用することでさらに効果を発揮します。例えば、AWS Trusted Advisorを併用することで、セキュリティ面の最適化と併せてコスト削減が可能になります。また、AWS Cost ExplorerAWS Budgetsを利用すれば、リアルタイムでコストを可視化し、予算管理も強化できます。これにより、全体のコスト管理とパフォーマンスの最適化が統合的に行えるようになります。

7. Compute Optimizerの限界と注意点

Compute Optimizerは非常に便利なツールですが、以下の制限があります。

  • サポートされているリソースは限定的(EC2、EBS、Lambda、Auto Scalingグループ、RDS、Fargate)
  • 推奨事項は参考情報であり、自動で適用されるわけではなく、提案事項を見て作業者による手動対応が必要です。

8. まとめ

いかがでしたか?

AWS Compute Optimizerは、コスト削減とリソース管理を効率化する強力なツールです。活用することでリソースの無駄をなくし、負荷変動にも柔軟に対応できます。難しい設定は不要なので、これからAWSのリソースをもっと有効活用するべく、Compute Optimizerを積極的に取り入れてみてください。