RIのインスタンスサイズ柔軟性適用要件について一つ一つたどりつつ振り返ってみた

はじめに

リザーブドインスタンスの概要についてBlackBeltや認定試験対策書籍を通して読解を進めていたものの、実業務上にて知識が紐付かない及び足りていないという状況になりました。

  • リザーブドインスタンスとオンデマンドインスタンスの違い
  • リザーブドインスタンスの適用条件
  • インスタンスサイズの柔軟性が適用される条件と結果

について、恐らく理解している筈の知識も含めておさらいしつつ、特に今回紐付いていなかったことを実感した「インスタンスサイズの正規化係数」について踏み込みました。

以下、参考にした公式ドキュメントとなります。 リザーブドインスタンス がどのように適用されるか - Amazon Elastic Compute Cloud

オンデマンドとリザーブド

オンデマンド(On-Demand)とは

「要求に応じて」の意味があり、オンデマンドインスタンスとは「要求に応じて提供されるインスタンス」となります。

リザーブド(Re-Served)とは

「予約済みの」の意味があり、リザーブドインスタンスとは「利用予約済みのインスタンス」となります。「利用予約済みの」と表現しましたが、具体的には条件の一致する実行中のオンデマンドインスタンスに対して自動適用される仕組みとなっています。

リザーブドインスタンスの適用条件

条件が一致した場合に適用となります。

リザーブドインスタンス の購入#リザーブドインスタンス を使用する - Amazon Elastic Compute Cloud

上記記事から各条件の引用となります。

プラットフォーム(platform)

リザーブドインスタンス のプラットフォーム (製品の説明) と一致するAmazon Machine Image (AMI) を選択する必要があります。たとえば、Linux/UNIX を指定する場合、Amazon Linux AMI または Ubuntu AMI からインスタンスを起動できます。

インスタンスタイプ(instance-type)

リザーブドインスタンス と同じインスタンスタイプを指定します。たとえば、t2.large など。

インスタンスタイプ別の詳細は以下の公式ドキュメントを参照してください。

インスタンスタイプ - Amazon EC2 | AWS

アベイラビリティーゾーン(availability-zone)

特定のアベイラビリティゾーンに リザーブドインスタンス を購入する場合、同じアベイラビリティゾーンでインスタンスを起動する必要があります。リージョン リザーブドインスタンス を購入した場合、どのアベイラビリティゾーンでもインスタンスを起動できます。

テナンシー(tenancy)

インスタンスのテナンシーは リザーブドインスタンス のテナンシーを一致する必要があります。たとえば、dedicated や shared など。

テナンシーの各要素については、以下のDevIO記事が参考になります。

EC2 インスタンスのテナント属性を理解する

インスタンスサイズの柔軟性

適用条件

公式ドキュメントによると以下のとおりです。

デフォルトのテナンシーを持つ Amazon Linux/Unix プラットフォームを使用する リザーブドインスタンス にのみ適用されます。

「デフォルトのテナンシー」とは、defaultの値が設定されているケースになります。

適用の要因

リザーブドインスタンス購入時のインスタンスサイズそのものではなく、インスタンスサイズの正規化係数によって決定されます。

また、

インスタンスサイズの柔軟性は、インスタンスファミリー内の最も小さいインスタンスサイズから大きいインスタンスサイズへ、正規化係数に基づいて適用されます。

とあるため、例えばm3.small(係数1)インスタンスを動かしている状態にて、m3.large(係数4)インスタンスを追加し、m3.large(係数4)のRIを購入した場合は

  1. m3.small(正規化係数1)に1適用(残り3)
  2. m3.large(正規化係数4)に3適用

という形になります。

正規化係数も合わせて例を上げましたが、以下が2019年9月時点で公式ドキュメントに記載されていた1時間あたりの正規化係数表です。

インスタンスサイズ 正規化係数
nano 0.25
small 1
medium 2
large 4
xlarge 8
2xlarge 16
3xlarge 24
4xlarge 32
6xlarge 48
8xlarge 64
9xlarge 72
10xlarge 80
12xlarge 96
16xlarge 128
18xlarge 144
24xlarge 192
32xlarge 256

正規化係数の適用事例に関する具体的なエントリーについては、以下の記事があります。

知らなかった。RIが小さいインスタンスタイプから順に適用されることを

その他

現状、RI購入に関する機会がないため細かくは触れませんでしたが、以下のDevIOエントリーも今回執筆時の参考にしています。

AWS再入門2018 リザーブドインスタンス編

あとがき

リザーブドインスタンスに関して、知識面や実際の操作にてある程度は理解できたと思っていましたが、確認を含めてエントリーとして書き出してみました。長期的な運用による経験が伴う点もあること等、座学のみによる知識吸収は「どの知識を実際の場面でどう役立てられるのか」を紐付けることが相当困難なことであると実感しました。

また、RIについても提供されているサービスはEC2に限定されません。情報の洪水という感覚にはなりますが、以下のDevIO記事からRIの広さがわかると思います。

読まなきゃ損($∀$)リザーブドインスタンスのススメ -2019春-

AWSのコスト削減には欠かせない仕組みであるため、長く付き合っていく場合には購入機会を持ったりする等、少しずつでも理解を広げることをおすすめします。