🦁

EC2 に Graviton2 を採用するかしないかの基準について考えてみた

2021/07/18に公開

この記事は??

仕事で AWS EC2 のインスタンスで Arm アーキテクチャーを使用している Graviton2 というものがありコスト面やパフォーマンス面でも従来のインスタンスを上回るものを提供していて仕事柄 EKS などを使用することが多くコスト面やパフォーマンスの向上につながることはとても魅力的なのでその点についてコスト面を主にして個人的に調べたことを纏めてみた内容です。

これから Graviton2 の導入などを検討されている方などの一つの助けになれば幸いです。

この記事で紹介すること・しないこと

  • 紹介すること

    • Graviton2 について
    • コスト面
    • どういう基準で Graviton2 を採用するかしないかを決めるか
  • 紹介しないこと

    • パフォーマンスについて
    • Graviton2 の具体的な考え方について

Graviton2 とは??

Arm ベースで作られている EC2 インスタンスの第2世代モデルです。
AWS が独自に設計した Arm Neoverse N1 コアを採用された CPU で従来のインスタンスと比較しても 最大40%のコストパフォーマンスが期待できるものになっています。

https://aws.amazon.com/jp/ec2/graviton

価格にして約20% ほど安価であり、 従来の x86系のインスタンスは 2vCPU で 1物理コアに対して Graviton2 は 1vCPU で 1物理コアを提供しているので同じインスタンスサイズであれば2倍の物理コアを使用することができます。

コスト比較

Graviton2 と従来のインスタンスのコストを比較してみましょう。
今回は汎用的なインスタンスである m5 系のインスタンスと m6g 系のインスタンスを比較してコストについて紹介したいと思います。

今回は全て東京リージョンでの価格で純粋にインスタンスのみの価格で紹介します。

m5.xlarge 
0.248 USD/h
vCPU 4
メモリ16GiB

m6g.xlarge
0.198 USD/h
vCPU 4
メモリ 16GiB

この2つのインスタンスをベースに比較していきたいと思います。

まず単純にオンデマンドで動かしている場合のコストです。
1ヶ月間フルで立ち上げっぱなしの場合を想定します。

## m5.xlarge
0.248 * 24 * 30 = 178.56 USD

## m6g.xlarge
0.198 * 24 * 30 = 142.56 USD 

142.56 - 178.56 = -36 USD

単純にオンデマンドで動かした場合月当たりで 36 USD のコストが下がることになります。
これは1台あたりのコストであり複数台インスタンスを立たせている状態ではその分コストの効率化が測れることになります。

次にスポットインスタンスでの比較をしたいと思います。

## m5.xlarge 0.0699 USD/h
0.0699 * 24 * 30 = 50.328 USD

## m6g.xlarge 0.0734 USD/h
0.0734 * 24 * 30 = 52.848 USD

52.848 - 50.328 = 2.52 USD

スポットインスタンス1台につき 2.52USD のコスト効率が悪いということがわかります。
スポットインスタンスを多く使用しているユーザーにとってはコストの面ではやや割高になることがここからもわかるかと思います。

次に リザーブドインスタンスや Savings Plans を使用した場合のコストの比較をしていきます。
リザーブドインスタンスや Savings Plans はそれぞれの詳細な仕組みについては省きますが、事前にインスタンスを購入しておくことで対象のインスタンスのコストを下げてくれるという仕組みです。

AWS において最もコストがかかりやすいサービスの一つとして EC2 が挙げられ EC2 のコストを最適化することは AWS 全体のコストを最適化することにも繋がっているので是非利用を検討したいサービスの一つです。

https://aws.amazon.com/jp/ec2/pricing/reserved-instances

https://aws.amazon.com/jp/savingsplans

今回は Savings Plans の EC2 Instance Savings Plans 使用し料金全額前払いした場合のコストの比較について検証したいと思います。
Savings Plans のコミットメントを丁度使い切っているという前提での計算になります。

## m5.xlarge 0.146 USD /h
0.146 * 24 * 30 = 105.12 USD 

## m6g.xlarge 0.1176
0.1176 * 24 * 30 = 84.672 USD

84.672 - 105.12 = -20.448 USD

Savings Plans の場合、20.448 USD のコストダウンが Graviton2 を使用することで可能になります。
オンデマンドに比べてややコストの開きが小さくなっていることがわかります。
ここのインスタンスサイズを m5a の世代などにすると更に開きが小さくなるので Savings Plans 使用時は Graviton2 のコスト面の恩恵を最大に受けることは現状できないという状態です。

Gravition2 を採用する基準

では最後に Graviton2 を採用するかどうかの個人的な基準について書きたいと思います。
個人的には以下のケースに当てはまっているような所では積極的に Graviton2 の導入を検討していいと思います。

  • パフォーマンス面で課題を抱えている
  • オンデマンドで立ち続ける必要のあるアプリケーションの運用をしている

逆に以下のケースでは導入を慎重に検討する必要があると思います

  • スポットインスタンスの割合が多めに使用しているアプリケーションを運用している
  • Savings Plans などのコスト最適化施策を取り入れる準備がある
  • パフォーマンス面で大きな問題を抱えていない

主にコスト面でスポットインスタンスを使用していると割高になってしまい Savings Plans との併用などを考えている場合は更にコスト面にメリットが薄くなる傾向があるので検討する必要があります、最初に述べたように Graviton2 は従来のインスタンスよりも高い性能を持っているインスタンスなので性能面などで課題を抱えているユーザーに対してはとても魅力的な選択肢の一つになり、もし私が運用しているアプリケーションでも性能面の課題を抱えていたら導入を検討していると思います。

他にも Arm 対応への移行などを検討する必要もありますが現在多くの OSS が Arm 対応をしているのでそこまで大きな障壁にはならないかと思います。

最後になりますが、今回 Graviton2 を導入検討するにあって費用面含めてとても勉強になりました。
今回の記事を読んでいただくことで Graviton2 の導入の一つの助けになれば幸いです。

Discussion