AWSの属性ベースのインスタンスタイプ選択(ABIS)とは?仕組みとメリットをわかりやすく解説
AWSでEC2を利用するときは、
m7i.large
c7i.large
r7i.large
のように、インスタンスタイプを指定するのが一般的です。
しかし、必ずしも「m7i.largeでなければならない」というわけではなく、
vCPUが4以上、メモリが16GiB以上あればいい
というケースもあります。
このような場合に利用できるのが、**属性ベースのインスタンスタイプ選択(Attribute-Based Instance Type Selection:ABIS)**です。
ABISとは?
ABISは、EC2インスタンスタイプを直接指定する代わりに、必要なスペックや条件を指定して、その条件を満たすインスタンスタイプをAWSに選択させる仕組みです。
従来は、
m7i.large
のように具体的なインスタンスタイプを指定します。
ABISでは、
vCPU
メモリ
CPUメーカー
インスタンス世代
ストレージ条件
などの条件を指定します。
AWSはその条件を満たすインスタンスタイプを候補として利用します。
従来の指定方法との違い
通常の指定では、利用するインスタンスタイプを自分で決めます。
EC2
↓
m7i.large
ABISでは、必要な条件を指定します。
必要なスペック
・vCPU
・メモリ
・その他の条件
↓
ABIS
↓
条件を満たす
インスタンスタイプ
つまり、
従来
このインスタンスタイプを使いたい
ABIS
このスペックを満たすインスタンスを使いたい
という考え方の違いがあります。
なぜABISを使うのか?
AWSには非常に多くのEC2インスタンスタイプがあります。
例えば用途によって、
- 汎用
- コンピューティング最適化
- メモリ最適化
- ストレージ最適化
などのインスタンスファミリーがあります。
さらに新しい世代のインスタンスタイプも追加されていきます。
インスタンスタイプを一つずつ指定していると、
m6i.large
m6a.large
m7i.large
m7a.large
...
のように候補を管理する必要があります。
ABISでは「インスタンスタイプ名」ではなく「必要な条件」を指定できるため、候補となるインスタンスタイプを柔軟に利用できます。
Auto Scalingとの関係
ABISはAmazon EC2 Auto Scalingなどで利用できます。
例えばAuto Scalingで特定のインスタンスタイプだけを指定している場合、
Auto Scaling
↓
m7i.large
基本的には指定したインスタンスタイプを利用します。
ABISを利用すると、
Auto Scaling
↓
必要なスペックを指定
↓
条件を満たす
複数のインスタンスタイプ
↓
EC2を起動
という構成にできます。
特定のインスタンスタイプに依存しにくくなるのが特徴です。
EC2 Fleetとの関係
ABISはEC2 Fleetでも利用できます。
EC2 Fleetでは複数のインスタンスタイプや購入オプションを組み合わせて、必要なキャパシティを確保できます。
ABISを利用すると、インスタンスタイプを大量に列挙する代わりに、必要なスペックを指定して候補を作れます。
EC2 Fleet
↓
ABISで条件指定
↓
複数の候補
↓
必要なキャパシティを確保
Spot Instanceとの相性
ABISはSpot Instanceを利用する場合にもメリットがあります。
Spot Instanceは、AWSの余剰EC2キャパシティを利用する仕組みです。
そのため、特定のインスタンスタイプだけに限定すると、そのインスタンスタイプのキャパシティを確保できない可能性があります。
例えば、
m7i.largeだけ指定
↓
キャパシティ不足
↓
起動できない可能性
一方でABISを利用して候補となるインスタンスタイプを増やすと、
必要スペック
↓
ABIS
↓
┌─────────────┐
m7i.large
m7a.large
m6i.large
その他の候補
└─────────────┘
↓
利用可能なキャパシティから起動
といった形にできます。
特定のインスタンスタイプへの依存を減らし、Spot Instanceのキャパシティを柔軟に利用しやすくなります。
ABISのメリット
インスタンスタイプの管理を減らせる
インスタンスタイプを一つずつ列挙する必要を減らせます。
従来
m6i.large
m6a.large
m7i.large
m7a.large
...
↓
ABIS
必要なvCPU・メモリなどを指定
インスタンスタイプが増えても、必要な条件を中心に管理できます。
新しいインスタンスタイプを利用しやすい
インスタンスタイプを固定していると、新しい世代が登場しても設定を変更しなければ利用できません。
ABISでは条件を満たしていれば、新しいインスタンスタイプも候補に含めやすくなります。
そのため、特定のインスタンス世代への依存を減らせます。
キャパシティを確保しやすくなる
候補となるインスタンスタイプを増やすことで、特定のインスタンスタイプの在庫状況だけに依存しにくくなります。
特にAuto ScalingやSpot Instanceを利用する環境では重要なメリットです。
ABISを使えば必ず安くなる?
ABISを利用したからといって、必ずEC2料金が安くなるわけではありません。
ABISは基本的に、必要な条件から利用可能なインスタンスタイプの候補を柔軟にするための仕組みです。
ただし、
- 複数のインスタンスタイプを利用する
- Spot Instanceを活用する
- 特定のインスタンスタイプへの依存を減らす
といった設計と組み合わせることで、コスト最適化につながる可能性があります。
ABISが向いているケース
ABISは特に、
- Auto Scalingを利用している
- EC2 Fleetを利用している
- Spot Instanceを活用したい
- 特定のインスタンスタイプに依存したくない
- 必要なvCPUやメモリが決まっている
- インスタンスタイプの候補管理を簡単にしたい
といった環境で利用しやすい仕組みです。
逆に、
このアプリケーションは必ず特定のインスタンスタイプで動かしたい
という明確な理由がある場合は、インスタンスタイプを直接指定する方法も選択肢になります。
まとめ
AWSの属性ベースのインスタンスタイプ選択(ABIS)は、EC2インスタンスタイプを直接指定するのではなく、必要な属性を指定して条件を満たすインスタンスタイプを利用する仕組みです。
従来
インスタンスタイプを指定
↓
m7i.large
ABIS
必要なスペックを指定
↓
vCPU・メモリなど
↓
条件を満たすインスタンスタイプ
ABISを利用すると、特定のインスタンスタイプへの依存を減らし、複数のインスタンスタイプを柔軟に利用できます。
特に、
Auto Scaling
EC2 Fleet
Spot Instance
などと組み合わせることで、キャパシティの確保やインスタンスタイプ管理の簡素化につながります。
ABISを理解するときは、
「インスタンスタイプを選ぶ」のではなく「必要なスペックを指定する」
と覚えると分かりやすいでしょう。