【AWS】EC2 インスタンスファミリーの種類と使い分け

# はじめに
EC2インスタンスは、仮想サーバーの一種であり、様々な用途に合わせて選択できる多種多様な **インスタンスタイプ** を提供しています。

https://aws.amazon.com/ec2/instance-types/?nc1=h_ls

インスタンスタイプとは、CPU、メモリ、ストレージ、ネットワーク性能などのリソース構成と、それに対応する料金体系を組み合わせた、EC2インスタンスの具体的な仕様です。例えば、「m5.large」や「c5.2xlarge」などがインスタンスタイプにあたります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/6e162c06-d937-403b-aa01-cb0729219dca.png)


これらのインスタンスタイプは、ワークロードの要件に合わせて最適化されており、適切なインスタンスタイプを選択することで、パフォーマンスとコスト効率を大幅に向上させることができます。

この記事では、インスタンスタイプを分類する **インスタンスファミリー** の種類とそれぞれの特徴、最適な使い分けについて解説します。

# EC2 インスタンスファミリーとは
EC2 インスタンスファミリーは、インスタンスタイプをリソース構成に基づいてグループ化したものです。各ファミリーは、特定のワークロードやユースケースに最適化されており、適切なファミリーを選択することが、パフォーマンスとコスト効率を最大化する鍵となります。

# 各インスタンスファミリーの特徴と最適な使い分け
EC2インスタンスファミリーは、主に以下の5つのカテゴリーに分類されます。

## 1. 汎用インスタンス: 幅広いワークロードに対応
汎用インスタンスは、CPU、メモリ、ネットワークリソースのバランスが取れており、ウェブサーバー、開発環境、中小規模データベースなど、幅広いワークロードに適しています。

### Mファミリー: Main purpose
汎用ワークロード向けに、コンピューティング、メモリ、ネットワークリソースのバランスが取れたインスタンスです。

### Tファミリー: Burstable Performance
バースト可能なパフォーマンスを提供する低コストのインスタンスで、トラフィックがスパイクするウェブサイトや開発環境に適しています。

:::note
「T」は元々「Tiny」から来ており、小規模ワークロード向けでした。
現在ではバースト可能なパフォーマンスを提供する低コストのインスタンスとして知られています。
:::

### Aファミリー: Arm-based
Armベースのプロセッサを搭載しています。コスト効率が優れた汎用ワークロードに適しています。

## 2. コンピューティング最適化インスタンス: 高いCPU性能を必要とするワークロードに最適
コンピューティング最適化インスタンスは、高いCPU性能を必要とするワークロードに最適化されています。

### Cファミリー: Compute optimized
HPC (High-Performance Computing)、ゲームサーバー、動画エンコードなど、コンピューティング負荷の高いワークロードに適しています。

## 3. メモリ最適化インスタンス: 大量のメモリを必要とするワークロードに最適
メモリ最適化インスタンスは、大量のメモリを必要とするワークロードに最適化されています。

### Rファミリー: RAM optimized
インメモリデータベース、ビッグデータ処理、リアルタイム分析など、メモリ負荷の高いワークロードに適しています。

### Xファミリー: eXtreme memory
大規模なインメモリデータベース、HANA (High-Performance Analytic Appliance)、Sparkなど、非常にメモリ負荷の高いワークロードに適しています。

### Zファミリー: High frequency
高速なCPUと大量のメモリを組み合わせ、EDAやシミュレーションなど、メモリ集中型かつコンピューティング負荷の高いワークロードに適しています。

:::note
「Z」は、特定の単語の頭文字ではなく、このファミリーの特殊性を表す記号として使用されています。
:::

## 4. ストレージ最適化インスタンス: 高いストレージI/O性能を必要とするワークロードに最適
ストレージ最適化インスタンスは、高いストレージI/O性能を必要とするワークロードに最適化されています。

### Iファミリー: IOPS optimized
NoSQLデータベース、データウェアハウス、分散ファイルシステムなど、高速なローカルストレージを必要とするワークロードに適しています。

### Dファミリー: Dense storage
大規模なシーケンシャル読み書きを必要とする、HDFS、MapReduce、ログ処理などのワークロードに適しています。

### Hファミリー: High Throughput
高いスループットと低レイテンシーを必要とする、Hadoop、Spark、大規模なデータ処理などのワークロードに適しています。

## 5. アクセラレーテッドコンピューティングインスタンス: GPUやFPGAによる高速化を必要とするワークロードに最適
アクセラレーテッドコンピューティングインスタンスは、GPUやFPGAなどのハードウェアアクセラレータを搭載し、機械学習、深層学習、グラフィックス処理などのワークロードを高速化します。

### Pファミリー: GPU optimized
機械学習、深層学習、HPCなど、GPUによる高速化を必要とするワークロードに適しています。

### Gファミリー: Graphics processing unit
グラフィックス処理、ゲームストリーミング、仮想デスクトップなど、GPUによる高速化を必要とするワークロードに適しています。

### Fファミリー: FPGA programmable
FPGAによるカスタムハードウェアアクセラレーションを必要とするワークロードに適しています。

# 最適なインスタンスタイプの選択方法
最適なインスタンスタイプを選択するには、以下の要素を考慮する必要があります。

- ワークロードの要件: CPU、メモリ、ストレージ、ネットワーク性能など
- パフォーマンス要件
- コスト要件
- ソフトウェアライセンス: 必要なソフトウェアライセンス、インスタンスタイプとの互換性
- 可用性と信頼性

AWS Cost Optimization ホワイトペーパーも参考になります。

https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html

# まとめ
EC2 インスタンスファミリーは、多種多様なワークロードに対応するため、さまざまなインスタンスタイプを提供しています。適切なインスタンスタイプを選択することで、パフォーマンス、コスト、セキュリティを最適化できます。

# 参照
- [Amazon EC2 Instance types](https://aws.amazon.com/ec2/instance-types/?nc1=h_ls)
- [Cost Optimization Pillar - AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html)
- [Overview of Amazon EC2 and Amazon RDS Instance Families](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-right-sizing/overview-amazon-ec2-amazon-rds.html)