はじめに
この記事は株式会社ナレッジコミュニケーションが運営する Amazon AI by ナレコム Advent Calendar 2019 の18日目の記事になります。
18日目である今日は AWS Compute Optimizer について書いていきます。
インスタンスタイプ最適化の難しさ
突然ですが皆さん、サービスを運用するにあたってこんなことに直面したこと、思ったことはありませんか?
- サービス稼働しているけどなんとなく重い
- メトリクス見る限りでは全然余裕がありそう。1つ下のスペックに下げてもいいんじゃ?
- そもそも今利用しているインスタンスってサービスにあった最適なものを選べているのか
インスタンスサイズが小さすぎればアプリケーションのパフォーマンスが低下し、ユーザの顧客満足度を得ることが出来ません。
かといってインスタンスサイズが大きすぎればコストがかかる。
サービス運用者にとっては悩みのタネの一つです。
しかし最適なインスタンスを選ぶのは中々に大変な作業。
平常時とピーク時のリソース利用状況を把握し、インスタンスタイプを選択。そしてまたリソース利用状況を取得し検証。 と繰り返しの作業になり期間を要するためです。
コスト削減のためにインスタンス最適化をしようにも、その結論を出すまでの工数が費用に見合ってなければ本末転倒ですしね。
今回はそんな悩みを解決してくれそうなサービスがAWSから発表されたので使ってみたいと思います。
AWS Compute Optimizerとは
AWS Compute Optimizer は AWS re:Invent 2019 の期間中に発表された新サービスです。
AWSアカウント内の Amazon EC2 リソース利用状況に対して機械学習を行い、最適なインスタンスタイプを返してくれるといったサービスになります。
似たようなサービスである Cost Explorer の Resource Optimization Recommendations がありますが、こちらとの違いとして、AWS Compute Optimizer は異なるインスタンスファミリーへのレコメンドをしてくれる点があげられます。
対応リージョン/対応言語
今回は AWS コンソールからサービスを利用してみたいと思います。
対応リージョンは下記の5つです。(2019年12月17日時点)
- 米国東部 (バージニア北部) us-east-1
- 米国西部 (オレゴン) us-west-2
- 米国東部 (オハイオ) us-east-2
- 欧州 (アイルランド) eu-west-1
- 南米 (サンパウロ) sa-east-1
また現時点では日本語非対応のようで左下の言語選択から「English(US)」を選択する必要があります。
AWS Compute Optimizer を使ってみる
それでは早速使ってみましょう!
AWSコンソールへログイン後「AWS Compute Optimizer」と検索し開くと、新サービスを開始する際のお馴染みの画面が表示されるので右上の「ご利用開始」から設定をしていきます。
セットアップ
アカウントのセットアップ画面が開くので「オプトイン」を押下します。
画像の下にも記載がありますが、分析対象となるCloudWatchメトリクスは直近2週間のものが対象となるそうです。
またレコメンドには最低30時間分のメトリクスが必要とのこと。
ダッシュボード
セットアップが終わったので分析結果を見てみます。
※分析完了までの時間はリソース量によって異なります。
ダッシュボードからは分析の結果、利用中のインスタンスが「スペック不足・最適・過剰スペック」なのかを一覧として確認することが出来ます。
今回のテスト用に立てたサーバは「Optimized」の結果が出ていました。
結果画面
先程のダッシュボード画面では「Optimized」と出ていたので特に何もないかなと思ってましたが、詳細を確認すると最新世代のt3シリーズへ切り替えることで費用が抑えられますよ。と勧められているのがわかるかと思います。
比較画面
現在利用しているインスタンスと推奨インスタンスへ変更した際の比較をみることができます。
料金のほかメトリクスについても確認ができるためスペック変更の指標とできそうですね。
ちなみにこのテストサーバには、 CloudWatch Agent が入ってないためメモリのグラフが空白となっていますが、メモリ利用率も分析対象とすることが可能です。
まとめ
インスタンスサイズの最適化にはサーバチューニングなどもありますが、
数クリックで推奨スペックが提示される上にこれが無料でできるというのだから驚きです。
東京リージョン対応が待ち遠しいですね。