vCPU:4, メモリ:8GiBのEC2インスタンスでハイパーバイザーがXenの物を探すやり方

具体的な要件がある場合のインスタンスタイプの選び方としてInstance Types機能を利用した方法を紹介します。Nitro世代のインスタンスが利用できない!という問題が出たときにさっと解決してくれる地味に良い機能です。
2020.02.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

最適なインスタンスを選んでいますか?(挨拶

今回はむちゃくちゃ具体的な要件ですが、最適なインスタンスタイプを探す話です。

EC2インスタンスのタイプが多すぎてどれを選べばいいかわからない件

EC2のインスタンス種類や価格を調べたことがある方は自身の環境にあったインスタンスを探すのに苦労したことがあるかと思います。

下記ページを見ればわかりますが、たくさんありすぎて自分たちの要件が先にあると探しづらいです。

インスタンスタイプ - Amazon EC2 | AWS

今回はそういった状況の中、探しやすい方法を紹介します。

Instance Types機能でガリガリ絞り込む

少し前インスタンスの条件を選択しながら目的のインスタンスタイプを見つけることができるInstance Typesという機能が出ました!

【アップデート速報】「Instance Types」機能が追加され、EC2のインスタンスタイプの比較が楽にできるようになりました!

ご存知でしたか?

めちゃくちゃ地味でもありますが、最適なインスタンスタイプを探すというこの作業に関しては圧倒的なパフォーマンスを出すことができる機能です。

今回はめちゃくちゃ具体的な要件ですが、

「vCPU:4, メモリ:8GiBのEC2インスタンスだからc5.xlargeでいいじゃんって思ったら乗せるOSの要件でNitro世代のインスタンスが利用できないのでXenのインスタンスにしなくちゃいけなくて、c4.xlargeにしようとしたらメモリが7.5GiBしかなくてあぼーん。どれ選んだらええねん」という要件で探していきます。

何言っているかよくわからない方のために補足すると、c5やらc4やらのcx系はコンピューティング最適化のインスタンスタイプで、数字は世代を表しています。

c5 -> c4という選択の仕方はAWSの新しいハイパーバイザーNitroが利用できない場合に行うものですが、最近は対応しているものも多いのでとりあえず新しい世代を選んだほうがパフォーマンスもコストもメリットが出る場合が多いです。

一般的にxlarge等の表現は同じ種類のインスタンスタイプならvCPUやメモリの数がほぼ同じなのですが、c5.xlargeとc4.xlargeは地味に0.5GiB違うという罠があるのです。

コンソールから絞り込む

それではやっていきます。

AWSマネジメントコンソールにログインして、EC2の画面から「インスタンスタイプ」にアクセスします。

フィルター欄から条件を指定して絞り込みができます。上の方に出てくるvCPUなどを利用すると、完全一致で絞り込まれるので、vCPUやメモリは下の方にあるMinとMaxを利用することをおすすめします

そして、Nitroじゃない世代(Xen)を選びたいのでハイパーバイザーをXenとします。これで完璧!適切なインスタンスタイプとスペック、料金の一覧が確認できます。素晴らしい!

どうやらぴったりvCPU:4, メモリ:8GiBのEC2インスタンスで条件似合いそうなものは無いので、メモリが予定よりは多くなりますが16GiBあたりの物を選ぶことで要件を満たせそうです。

一番料金が安いのはt2.xlargeですが、t系はバースト可能パフォーマンスインスタンスで本番ワークロードで使うには特性をよく理解して利用する必要があるため、今回はm4.xlargeを選ぶのが無難そうです。

まとめ

Instance Types機能を利用して必要な要件を満たすインスタンスタイプを探しました。

注意していただきたいのは、インスタンスタイプによる違いは単純なvCPUやメモリ以外にも、ハイパーバイザーやCPUアーキテクチャ、ネットワークパフォーマンス等たくさんあることと、同じように見えても実際のパフォーマンスやコスト効率が違うため、実際のアプリケーションを動かしてパフォーマンスを見ることが重要であるということです。

動かしてインスタンスタイプを切り替えられることも、AWSの魅力の一つですので、使いこなしていきましょう。