学習前
ComputeというからにはEC2とかLambdaとかECSをなんやらかんやらしてくれるサービス?
Optimizerの意味は知らん!
Compute Optimizerとは
ワークロードに最適な AWS リソースを推奨し、機械学習を使用して過去の使用状況に関するメトリクスを分析することで、コストを削減し、パフォーマンスを改善します。
簡単に言うと、機械学習を用いてAWSサービスを評価し、パフォーマンスやコストを適切な状態にしてくれるサービスです。
Optimize
は「最適化」という意味で、IT用語で「良い感じに(早く楽になるように)調整してくれる機能」だそうです。DB関連ではSQLをチューニングしてくれる機能とのこと。シラナカッタ…
例えばEC2では、下記の2つを比較して評価してくれます。
- EC2のインスタンスタイプ
- 実際のワークロード(CloudWatchメトリクスを元にした、一定期間の使用率やコスト)
ここで、ワークロードに対して適切なEC2インスタンスタイプが割り当てられていれば良いのですが、そうでない場面も多々あります。
極端な例ですが、平均CPU使用率が1%、ピーク時でも3%程度な状態を想像してください。
どう考えても、適切なインスタンスタイプが割り当てられているとは思えませんよね。明らかにインスタンスタイプが大きすぎます。これで膨大なコストを払い続けることになり、最適化されているとは言えません。
そんな過剰なインスタンスタイプが設定されている場合に、「こっちのインスタンスタイプの方が適切やで」 と教えてくれるイメージです。
また、逆も然りで、インスタンスタイプが小さい時にも教えてくれます。
利用可能サービス
コンソールで確認したところ、下記の7種類。
- EC2インスタンス
- Auto Scalingグループ
- EBSボリューム
- Lambda関数
- RDS DBインスタンス
- FargateでのECSサービス
- ライセンス(SQLなどサードパーティ製の商用ソフトウェアライセンス)
利点
大きく分けて、下記の4つです。
- ワークロードの詳細設定を最適化
- パフォーマンスに関する問題を解決する
- レコメンデーションによるコスト削減額を増やす
- ライセンスコストの最適化
総じて、パフォーマンスやコストを良い感じにしてくれるんだな〜 という認識で良いと思います。
追加で良いところは、インスタンスなどを停止することなく評価してくれる点です。
CloudWatchメトリクスを元にして比較・評価するので、現在稼働中のサービスもきちんと評価してくれます。
使い方
使い始めるのはめっちゃ簡単です。
Compute Optimizerコンソールを開き、「ご利用開始」をクリックします。
※OrganizarionsやIdentity Centerが有効になっている場合は、それに応じた設定も出てくるようです。
すると、ダッシュボードが表示され、ワークロードが可視化されます。
あとはこれを参考にして分析し、適切なインスタンスサイズなどに変更しましょう。
評価のために必要なCloudWatchメトリクス要件があります。これは各リソースによって異なるので、要注意です。
詳しくはこちらをご参照ください。
余談:CDKで使えるの?
使えませんでした;;
まぁコンソール上から2クリックで有効化できるし、わざわざCDKで書く意味もないですよね…
学習後
Compute系のサービスを適切な設定にしたいときに使うサービス!
サービスリリース前でも、リリース後でも、有効化しておくべきサービスのように感じました!
ただ、有効化するのは簡単でも実際に評価してもらうとなると少し手間がかかりそうなので、実際の使用時には調査必須だと思います!