プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWSのインスタンスの種別を改めて整理する

インスタンスタイプの読み方

 インスタンスの種別を説明する前に、まずインスタンスタイプの表記の命名規則の説明をします。AWSを使っていると、M5.LargeとかC5.Smallとか見かけると思いますが、何となく解るようで解らないという人もいるのではないでしょうか?命名規則は、次のようにインスタンスファミリー・世代・インスタンスサイズで構成されています。

f:id:dkfj:20200829204105p:plain

 インスタンスファミリーは、後ほど詳しく説明しますが、汎用タイプ・コンピューティング最適化タイプなど幾つかのカテゴリがあり、そのカテゴリー内でも更に細分化されています。世代は、そのインスタンスファミリーの何世代目なのかです。例にあるM5だと、汎用化タイプであるMの5世代目です。A1とかだとArmベースの1世代目ということですね。基本的には、いちばん新しいのをつかっておきましょう。最後のインスタンスサイズが、性能を示します。インスタンスファミリーごとにベースとなる性能は違いますが、そのベースの性能内でsmall, medium, large, xlarge, 2xlargeとサイズが大きくなるごとにCPU・メモリーのサイズが原則的に2倍になっていきます。一部のインスタンスは等比例になっていない場合もあり、また、インスタンスファミリーによってはサイズの選択肢が少ないものもあります。

 原則としては、上記の命名規則となりますが、最近は世代のあとに小文字のアルファベットがついているケースがあります。

f:id:dkfj:20200829204121p:plain

 これは追加機能を表します。例えば、M5aだと汎用タイプの第5世代目という点は同じですが、CPUがIntelベースではなくAMDベースとなります。同様に、AWSが設計したAWS ArmベースのGraviton2プロセッサを使用するM6gなどもあります。追加機能はCPUの種類が違うだけでなく、ネットワークが強化されたM5nのようなタイプがあります。小文字を見ただけでは判断つかないケースも多いので、それぞれの説明を見てみるとよいでしょう。

aws.amazon.com

インスタンスの分類

 前説が長くなりましたが、ここからが本題です。最近のAWSの試験だと、どのインスタンスファミリーを使うのかが適切かと問われるケースがあります。画像処理をするので、高速コンピューティングであるP3インスタンスかなと導き出せる必用があります。ということで、まずインスタンスの分類をみてみましょう。現在、5種類に分類されています。

  • 汎用
  • コンピューティング最適化
  • メモリ最適化
  • 高速コンピューティング
  • ストレージ最適化

 次に、それぞれのインスタンスの特徴と具体的なインスタンスファミリーをみてみましょう。

汎用

 汎用タイプは、言葉通り一番用途の幅が広いものです。CPU・メモリのバランスが取られています。どのタイプが良いか解らない場合は、まず汎用タイプを使ってみて、CPUやメモリの利用状況を計測してみると良いでしょう。

インスタンスファミリー 概要
A1 ArmベースのAWS Graviton プロセッサを搭載
T3 バースト可能なCPU。もともとTiny(小さな)という意味でパワーとコストを抑えたファミリー
T3a AMDベースのT3ファミリー
M6g AWS Graviton2 プロセッサベース。Mシリーズの6世代目は、現在はこのM6gだけ。Intelベースは今後出てくるのか?
M5 一番オーソドックスな構成のファミリー。最初のEC2インスタンスは、M1.smallだった
M5a AMDベースのM5ファミリー
M5n ネットワークを強化したM5ファミリー

Mシリーズがベーシックで、それ以外にTシリーズのバースト特性を把握しておく事が大切です。

コンピューティング最適化

 コンピューティング最適化はメモリに比べてCPUの性能比率が高いものです。CPUを多様するアプリケーション処理で利用するとパフォーマンスが向上します。なにげにWebサーバーで利用されるケースも多いです。インスタンスファミリーとしては、事実上1系統のCしかありません。CPUが良いのはCと覚えておきましょう。

インスタンスファミリー 概要
C6g ArmベースのAWS Graviton2 プロセッサを搭載。M6gと同様、最新世代はgだけ出ている
C5 C5ファミリーのオーソドックスな構成。Intelベース
C5a AMDベースのC5ファミリー
C5n ネットワークを強化したC5ファミリー

メモリ最適化

 名前の通り、メモリが大量に載っています。実はちょっとややこしくなってくるのが、このメモリ最適化以降。汎用化やコンピューティング最適化に比べ、利用の機会が限定的なので何だっけかなとなりがちです。代表的なのはRシリーズなので、RAM(Random Access Memory)がいっぱい使いたければRと覚えておきましょう。

インスタンスファミリー 概要
R6g ArmベースのAWS Graviton2 プロセッサを搭載。M6gと同様、最新世代はgだけ出ている
R5 C5ファミリーのオーソドックスな構成。Intelベース
R5a AMDベースのC5ファミリー
R5n ネットワークを強化したC5ファミリー
X1e SAP HANAとかにも使われるエンタープライズ向けインスタンスファミリー
X1 x1.16xlargeから始まってvCPUが64個に976GBのメモリから
ハイメモリ SAP HANAとかに使われるものごっついインスタンスファミリー。u-6tb1.metalという名前から解るようにベアメタル用
z1d CPUとメモリのどちらも高性能なインスタンスファミリー

X1などは、オンデマンドで利用すると1時間で1千円くらいします。とすると、1年間で876万円。富豪的ですね。

高速コンピューティング

この辺りから理解が難しくなってきます。高速コンピューティングとあるので、コンピューティング最適化とどう違うのとまず疑問になると思います。コンピューティング最適化はCPUの性能が高く、高速コンピューティングはGPU等のCPU以外を使っての処理が得意とざっくり抑えておいてください。

インスタンスファミリー 概要
P3 汎用 GPU インスタンス。画像処理となるとこのインスタンスファミリー
Inf1 機械学習推論アプリケーションに適したAWS Inferentia チップを搭載
G4 機械学習推論やグラフィックを大量に使用するワークロードに最適化
F1 FPGAが利用可能な特殊なインスタンス

 高速コンピューティングについては、概要を読んでもサッパリ解らないのではと思います。まず標準的なタイプがP3となります。NVIDIA Tesla V100 GPUを搭載し、画像処理(Picture)が得意なPシリーズとでも覚えておいてください。次にG4です。G4も機械学習推論やグラフィックとなっており、こちらも画像処理できるのかいと思うでしょう。こちらはNVIDIA T4 Tensor Core GPUsを搭載し、機械学習用途と理解しておきましょう。
 Inf1とF1は、更に特殊性が高いです。Inf1は用途的にはG4と同じで機械学習推論で利用されます。AWSが開発したAWS Inferentia チップを搭載し、コストパフォマンスが高い機械学習用途のインスタンスファミリーと理解しておきましょう。最後のF1は一番特殊です。FPGAということで、カスタムハードウェアアクセラレーションを実現できます。チップに処理を埋め込むような形で利用します。そうすることで、ハードウェアレベルで低コストでパフォーマンスの高い処理ができるとのことです。かなり特殊な用途ですね。

ストレージ最適化

 ストレージ最適化は、ストレージ処理に特化したインスタンスです。特徴としては、EBSじゃなくローカルストレージ(インスタンスストア)の性能が高く容量も大きいということです。

インスタンスファミリー 概要
I3 SSDベースで、Non-Volatile Memory Express (NVMe) SSD-backed インスタンスストレージを提供
I3en I3の拡張でネットワーク帯域が大きい
D2 HDDベースのインスタンスファミリー6〜48TBのローカルストレージ
H1 HDDベースで、CPUとメモリも大きい

 ストレージ最適化のややこしいところは、概要を読んでも違いが解りにくいところです。まずHDDベースのD2, H1とSSDベースのI3で分けましょう。HDDベースはシーケンシャルなアクセスに強く、SSDベースはランダムアクセスに強いです。HDDベースのD2とH1の違いは、CPU・メモリも高性能かという点です。が、D2は2015年、H1は2017年11月に発表されたインスタンスで、どちらもその後の後継が出ていないところをみると、性能特性としてはあまり進化していっていないです。同様にI3も2017年2月以降、後継のものは出ていません。

どのインスタンスを使うのか?

 いろいろなインスタンスファミリーを紹介して混乱したかも知れません。使い方に迷ったら、まずはMシリーズを使いましょう。そして、そのCPUやメモリの利用状況をみて、Cシリーズも検討しましょう。開発用途とかでコストを抑えたい場合は、Tシリーズになります。この3種類を使いこなせると、一般的なアプリケーション用途であれば9割ほどがカバーできます。認定試験対策としても、インスタンスファミリーの理解は必用ですので、これを機会に覚えてみてはいかがでしょうか?