【AWS】 EC2のインスタンスタイプについて解説します。
■はじめに
AWSのEC2を利用する際に「インスタンスタイプ選択」が大きな問題の一つになる方は少なくないのではないでしょうか。組み合わせによっては、インスタンスタイプの選択肢は実に100以上存在しており、あらゆるユーザーの条件に合わせ、いろいろな選択を可能にするインスタンスが用意されています。
その反面、インスタンスタイプによって料金が変わってコストに直結する問題になるので、簡単には選べない、と種類が豊富すぎるゆえに最適なものが分からないという悩みが生じます。そこで、EC2インスタンスタイプについて解説していきます。インスタンスタイプの選択に迷ったら参考にしてみてください。
■EC2(Elastic Compute Cloud)とは
簡単に箇条書きで示すと、以下のようになります。
- AWSクラウド上の仮想サーバー
- 開発者がテスト環境を用意する際に使われることが多いサーバー
- 毎月750時間の無料枠がある
- 秒単位の従量課金(課金に対する最小時間は60秒)
- サーバーの追加や削除などの変更が簡単
- 権限によって公開レベルを制限することができる。
■AWSの基本的なインスタンスタイプ
インスタンスのタイプには、汎用性のあるタイプやCPUに最適なタイプ、メモリに最適なタイプなど目的に合わせたインスタンスを選択することが可能です。タイプは、以下から構成されます。
- インスタンスファミリー(用途別に表記される。世代も示しているため、大きい数字ほどバージョンが新しい)
- インスタンスサイズ(スペックを表す)
【インスタンスファミリー】
メモリ、IO(Input/Output)、CPUクロック重視、GPU、FPGA(Field Programmable Gate Array)搭載などの特徴を持ちます。
また、以下の大きく5つのカテゴリに分類することができます。
- 汎用
- コンピューティング(CPU)最適化
- ストレージ最適化
- メモリ最適化
- 高速コンピューティング(GPU [Graphics Processing Unit] ・FPGA [Field Programmable Gate Array])
【インスタンス世代】
同じインスタンスのファミリーでも世代が進むにつれて数字が大きくなります。
(新しい世代は旧世代よりも性能もコストパフォーマンスも高いため、最新のインスタンスを利用することを推奨しています。)
【インスタンスサイズ】
メモリ、ネットワーク、CPU、の限界容量(Capacity)によってインスタンスサイズが分類されており、nanoやmicro、large〜4xlarge が存在し、一段大きくなると、vCPUとメモリサイズが倍になります。
ESBとネットワーク帯域幅について「最大」の表記は、バースト時(突然パフォーマンスを最大化しなければいけなくなった場合に自動で最大化してくれる機能)の最大性能を表しています。
■EC2インスタンスの追加機能
オプション表記として、インスタンスファミリーに別のアルファベットが付属している場合があります。追加オプションの内容は以下のようなものがあります。
- d:標準インスタンスに対して、内臓ストレージ(インスタンスストア)を内蔵
- n:標準インスタンスに対して、ネットワークを強化
- a:AMDのCPUを搭載
- e/s:その他(CPUやメモリ搭載が標準と異なる)
インスタンスストアとは
インスタンスの物理的ホストに直接アクセスされているブロックストレージで、高速IO(Input/Output)が可能なのが特徴です。インスタンスタイプによりサイズとタイプは固定されており、料金はECの料金に含まれています。インスタンス停止時にデータが削除されるため、停止時は事前に対処しましょう。
■インスタンスファミリーはどれを選べばいいか?
前述した分類の中で、汎用とコンピューティング(CPU)最適化は一般的な業務で利用するようなシステムなどに適しています。
【汎用】
この分類には「T3」「T2」「M5」「M4」の4種類が記載されています。
・T2/T3
特徴は、
- バースト可能なインスタンス(比較的安いインスタンスで、突然パフォーマンスを最大化しなければいけなくなった場合に自動で最大化してくれる機能)
- ピーク時のパフォーマンスを確保するための「Unlimitedモード」と月額の「スタンダードモード」が選択可能
など
開発環境やテスト環境でよく使われています。例えば、ある一定の時間だけ負荷が集中するといった傾向が見えているWebサイトなどの場合に多く利用されています。
・M5/M4
汎用的なインスタンスのかなでもバランスの取れたファミリーです。
バランスが取れたCPUやネットワーク、メモリを提供しているため、さまざまなアプリケーションにおいて適しています。一般的な利用範囲内であればこれを選んで間違いないです。
【コンピューティング(CPU)最適化】
この分類には「C5」「C4」の2種類が記載されています。
・C5/C4
AWSにて「コンピューティング負荷の高いワークロードに最適化」と記載があり、つまり性能が高いプロセッサを積んでいるといえます。
高性能なシステムに利用する場合、このシリーズがコストパフォーマンスにおいても最適です。
■「EBS最適化」とは
EBSとはEC2とセットで使用できるストレージのことで、そのEBSが最適化されていると性能や速度面において改善されるという効果が得られます。
EC2とEBSはネットワークでつながっていますが、これが最適化を適用していない場合他のネットワークと共有されており、それがもっとも問題視される問題点になってしまいます。しかし、EBS最適化によりEC2インスタンスとEBSをつなぐネットワークを、他のネットワークと切り分けて専用のものでつなぐことにより、様々な事象の改善が見込めます。
M4やC4などデフォルトでEBS最適化されているインスタンスもありますが、こういった点もインスタンスタイプ選びにおいて考慮すると良いでしょう。以下に画像で表記してみましたので、ぜひ参考にしてみてください。
【EBS最適化なし】
【EBS最適化あり】
■あとがき
AWSは初心者にも易しく、無駄な手続きが不要でスムーズにサーバーを利用できます。その柔軟さえゆえ、EC2インスタンスタイプ選択のように悩んでしまう場合も少なくありません。
しかし、基本的な部分をおさえれば、自身にあったものをしっかり見極めることができます。
デベロッパーチームを抱えているグループにとってどの仮想サーバーを使うか?ということは非常に重要な観点で、実際に利用しているデベロッパーチームも少なくないです。組み合わせによっては、コストを最小に抑えながら開発環境・テスト環境を整えることができるので、EC2の理解を深めておくのはチームにとって武器になると言えるでしょう。
EC2インスタンスタイプの基本を見てきましたが、一般的には本番環境ならば汎用インスタンスのM4/M5をベースに、用途に応じてT3/T2やC5/C4を選ぶといいでしょう。インスタンスタイプは作成後でも変更可能なので、重視すべきリソースの判断ができない場合は、とりあえずMを選択し使用してみるのもひとつの手です。