AWS Compute Optimizer が Amazon EBS ボリュームの推奨に対応しました

記事タイトルとURLをコピーする

SRE部 佐竹です。
本日も現在開催中の re:Invent2020 から、AWS Compute Optimizer のアップデートについて記載します。

はじめに

以下の通り AWS Compute Optimizer が Amazon EBS ボリュームの推奨に対応したというアナウンスがありました。

aws.amazon.com

本日はこの推奨(recommendations)がどのようなものか実際にマネジメントコンソールから見ていきたいと思います。

なお、AWS Compute Optimizer の始め方等については以下に紹介します過去のブログも合わせてご覧ください。

blog.serverworks.co.jp

f:id:swx-satake:20201204205150p:plain

また、現状EBS ボリュームでの推奨は「Not optimized」と「Optimized」の2種類です。EC2 Instance のように、以下の3種ではありません。

  1. Under-provisioned: プロビジョニング不足
  2. Optimized: 最適化
  3. Over-provisioned: 過剰プロビジョニング

Recommendations for EBS volumes

f:id:swx-satake:20201204200523p:plain

AWS Compute Optimizer のコンソールを確認すると、左下に Recommendations for EBS volumes が新たに追加されていました。さっそく詳細を確認します。

Not optimized:IOが不足しているケース

f:id:swx-satake:20201204201647p:plain

Not optimized の推奨で、IOが不足しているEBSが確認できました。これは左下にある「Burst balance」が不足しているかどうかでも判断可能と思われましす。gp2 では、1,000GiB 未満のボリュームは 3000 IOPS までのバーストクレジットを持ちますが、それが不足しているという状況です。EC2 インスタンスでいうところの Under-provisioned 状態です。

その対策案として以下が提示されています。

  1. gp2 のまま1021 GiB まで拡張し、容量×3倍の IOPS である 3063 を得る
  2. gp2 のまま1347 GiB まで拡張し、容量×3倍の IOPS である 4041 を得る
  3. gp3 へと変更しつつ、デフォルト下限の 3,000 IOPS から拡張し、設定を 4100 とする

第3の選択は、コストが削減されつつ IOPS も拡張されるという gp3 のメリットを生かしたよい推奨と思いますが、何故かこれが第3位のオプションになってしまっており少し気がかりです。コストパフォーマンス的にもこれが1位になっていても良いと感じたのですが何故でしょうね。

2020年12月17日 追記

f:id:swx-satake:20201217165448p:plain

先に「第3の選択は、コストが削減されつつ IOPS も拡張されるという gp3 のメリットを生かしたよい推奨と思いますが、何故かこれが第3位のオプションになってしまっており少し気がかりです」と記載していましたが、12月17日時点で確認したところ、このランキングが入れ替わっており、第1位のオプションに gp3 が表示されるようになっていました。これで安心ですね。

Not optimized:IOが過剰なケース

f:id:swx-satake:20201204203956p:plain

こちらの EBS ボリュームでは io1 で確保した IOPS が過剰になっているため、IOPS を引き下げてコスト削減が可能であるという推奨になっています。EC2 インスタンスでいうところの Over-provisioned 状態です。

指定されている 8,000 の IOPS を 4,000 と半分に引き下げれば、- $296.000 per month のコスト削減になります!これは素晴らしい推奨ですね。

こちらでも気がかりなのは、最新のボリュームタイプである io2 の推奨が「Option 2」と、下に位置していることです。以下のブログでも紹介しておりますが、基本的に io2 にして問題はないと考えられますため今回の推奨も io2 で変更するほうがより良いように思われます。

blog.serverworks.co.jp

f:id:swx-satake:20201204211606p:plain

なお、既に io2 を利用している状態で Not optimized となってる場合は、 io1 の推奨は表示されず「io2 のまま IOPS の設定値を引き下げる」推奨のみが表示されます。

Not optimized:スループットが不足しているケース(2020年12月16日追記)

f:id:swx-satake:20201216185238p:plain

利用中の gp3 のボリュームに対する推奨です。利用中の EBS ボリュームに対してスループットが不足していると指摘されています。

必要があればスループットを追加して最適化できますが、その分コスト増となります。

Optimized:適切だがコスト削減が可能なケース

今回、私が期待していたものの Optimized とされてしまうのがこちらです。

blog.serverworks.co.jp

上記ブログの通りなのですが、 gp2 から gp3 にスライドするだけで、基本的にはコストが削減可能です。そのため「gp2 を使っているほぼ全てのケースで gp3 への切り替えの推奨が出るのでは」と考えていたのですが、結果は Optimized とされてしまいます。具体的に見てみます。

f:id:swx-satake:20201204210042p:plain

上画像は Optimized となっている EBS の推奨オプションの詳細なのですが、ここでもまた - $1.440 per month とコストが削減されるオプションがあるものの、変更なしの現状維持が Option 1 であり、Option 2 で gp3 によるコストが削減推奨されています。

個人的には、ここは Option 1 に gp3 が来てほしいところですが、 EBS ボリューム の推奨においてはそのようになっておりませんでした。

まとめ

AWS Compute Optimizer にアップデートがあり、EBS ボリュームの推奨に対応しました。

実際にマネジメントコンソールから状況を確認してみると以下の通りでした。

  1. IOが不足している EBS ボリュームがある場合に、それがコスト増となっても IOPS を確保するよう推奨される
  2. IOが過剰となっている EBS ボリュームがある場合に、コスト削減のため IOPS の設定値を引き下げるよう推奨される
  3. スループットが不足している EBS ボリュームがある場合に、それがコスト増となってもスループットを確保するよう推奨される
  4. スループットが過剰となっている EBS ボリュームがある場合に、コスト削減のためスループットの設定値を引き下げるよう推奨される
  5. io1 を io2 に変更する、また gp2 を gp3 に変更する推奨オプションは最も低い優先順位のオプションとして表示される ※2020年12月17日に修正されたことを確認したため削除

私としてはこの機能が発表された時に「全ての gp2 は gp3 に変更するよう Not optimized される」のだろうと楽しみにしていたのですが、そうではなく Optimized の表記のまま詳細を確認すると gp3 が推奨されるという設計でした。

積極的に gp3 に切り替えるには時期尚早ということでしょうか。もしかすると今後は記載した通り gp2 は全て gp3 に変更するように推奨されるかもしれないですね。

2021年5月25日追記

EBS ボリュームの推奨(とLambdaの推奨)項目は S3 バケットに推奨結果を出力できなかったのですが、2021年5月19日のアップデートでこれが可能になりました。合わせてご確認ください。

aws.amazon.com

それではまたお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。