24卒、AWS初心者の石田です。
EC2のインスタンスタイプって、簡単に選べてしまうがゆえに「本当にこれで大丈夫?」と思ったりしますよね。私は思います。 そのため本記事では、インスタンスタイプを簡単に、不安を減らしながら選べる方法についてまとめています(インスタンスタイプファインダーの使用や、vCPUの考え方など)。
インスタンスファミリーの理解をもとに選び方をまとめた先行記事もあるので、選定基準を自身で身に付けたい方は、ぜひこちらの記事をご覧ください。
インスタンスタイプを選ぶ
インスタンスタイプを探す際、まず初めに見るのはこのページかと思います。
もう慣れている方はこちらで事足りると思いますが、ここではもう少しAWSの力を借りた方法をご紹介したいと思います。
インスタンスの種類を選ぶ
インスタンスタイプは主に4つの要素に分解できます。 ここでは、左の3つ(インスタンスファミリー、世代、追加機能)を一気に選べる機能を使ってみましょう。
インスタンスタイプファインダーを使う
インスタンスタイプファインダーとは、Workload type, Use case, Priority, CPU manufacturerで希望する値を選択するだけで、適したインスタンスの種類をおすすめしてくれる機能です。
EC2のナビゲーションペインから、インスタンスタイプ>Instance type finderを押下して使用します。
試しに「Workload type:Web/App Server, Use case:Application Hosting, Priority:High Performance, CPU manufacturer:AMD」で探してもらいましょう。
なんとM7a(汎用インスタンス)とC7a(コンピュート最適化インスタンス)まで絞れました!
内容を読むと、M7aとC7aが前世代のM6aとC6aと比べてどのように優れているのか(2)、それぞれがどのようなワークロードに適しているのか(3,4)、二つを比べたときにどのような違いがあるのか(6)などが記載されています。
英語表記なのが少し面倒なくらいで、AWS側にここまで選んでもらえると安心ですね。
公式ドキュメントでは、この手順がアニメーションでも説明されています。
また、インスタンスの起動画面からも同じ機能を使用することができるので、サクッと調べて起動したい時にも使えます。
インスタンスのサイズを選ぶ
インスタンスの種類が絞れたら、次はインスタンスサイズを選びます。
先ほどの画面から「View recommended instance family details」を押下して開くと、インスタンスの種類で絞り込んだインスタンスタイプの一覧が表示されます。
ここからメモリやネットワーク帯域幅等で選んでいくのですが、CPU性能を考える際に「vCPU」という概念を扱う必要があります。
vCPUの考え方を知る
結論から言うと、vCPUの値は「物理コア×コア毎のスレッド数の値」です。
基本的には1コアに対して1スレッドなので、8コアなら8コア×1スレッドで8vCPUとなります。 コア数と対応させて考えれば問題なさそうです。
しかし、1コアに対して2スレッド対応しているインスタンスタイプもあるので、私のように心配に思う方は、こちらのページを参照してください。
AWS側で管理しているハードウェアの、デフォルトで使用できるコア・スレッド数が一覧で表示されております docs.aws.amazon.com
インスタンスタイプの決定
(インスタンスタイプファインダーでおすすめの種類を絞って、vCPUの値をコア数で選び、念のため上のページで対応するスレッド数も確認したら) すんなりインスタンスタイプを確定できましたね!
インスタンスタイプの表記をすべて理解しようとするとなんだか煩雑なように思われますが、用途・要件さえ明確であれば、思ったよりも簡単に選ぶことができるようです。
インスタンスのカスタマイズ・変更
どんなに自信をもってインスタンスタイプを決定しても、ワークロードの状況に応じて性能を変更する必要が出てくる場合があります。
また、用意されたタイプでは要件を満たせないこともあるかもしれません。
そのため、EC2には性能をカスタマイズする方法がいくつか存在しています。
CPUオプションでのコア・スレッド数の指定
EC2インスタンスの起動時に、「高度な詳細」の項目からCPUオプションを指定することができます。
ここでは、vCPUの内容(コア、スレッド数)をカスタマイズすることができます。 (マルチスレッドにしたり、マルチスレッドを無効にしたりなどの操作ができます)
ここで選択できる値は、先のページに記載された有効なCPUコア・有効なスレッドの値です。
特定のアプリケーション要件がある場合や、オンプレミスのサーバー構成を再現する必要がある場合などに選択します。
また、インスタンスを複数起動する際には「起動テンプレート」でカスタム値を設定することができます。
それぞれの詳しい方法はこちらの公式ドキュメントをご覧ください(機会があれば作業手順を記事に起こすかもしれません)。
インスタンス作成後にインスタンスタイプを変更する
インスタンスの作成後にインスタンスタイプ自体を変更することも可能です。
コンソール上から簡単に変更することができますが、起動中のインスタンスを停止する必要があります。
この時、新たにCPUオプションを指定できます。
起動時にすでにCPUオプションを有効化していた場合でも、インスタンスタイプを変更することが可能です。
もちろん、ワークロードの状況に応じて大幅にスケールアップする必要がある場合は、 インスタンスの台数を増やすなどの水平スケーリングが推奨されます。
サーバーそのものの性能を上げたい場合や、垂直スケーリングしか可能でない環境の場合は、これらの方法が役に立つかもしれません。
また、AWSではサーバーの起動が容易なので、暫定的なサイズでとりあえず運用して、様子を見てインスタンスタイプを変更するなどの柔軟な動き方もできます。
要件に応じて、うまくインスタンスを扱えるようになりたいですね。
まとめ
インスタンスタイプを選ぶ基準を理解することは大切ですが、簡単にAWSの推奨がわかるなら、それを使って選定の妥当性を上げるのもアリだと思います。
加えて、vCPUの考え方や、インスタンスのカスタマイズ・変更方法を知ることで、よりEC2を理解したうえで選べると安心ですね。
[補足] 料金について
EC2の基本的な料金体系はこちらになります。
さらにPricing Calculatorを使用すれば、インスタンスタイプ・購入プラン・ストレージ(EBS)容量等のより詳細な条件を設定して、月額の利用料を試算することができます。
他サービスとの合計料金も算出してくれるので、ワークロード全体のコストを試算することも可能です。
石田裕菜
趣味は映画と音楽とドラゴンボールです