C5d.xlarge のインスタンスファミリーは C なのか C5 なのか C5d なのか

「インスタンスファミリー」がどこを指すのか、人によって解釈が分かれそうなところです。

インスタンスファミリーとはどこまでを指す?

コンバンハ、千葉(幸)です。

EC2 インスタンスタイプのネーミングポリシーについて、以下のような図を見かけることが多いかと思います。

Blackbelt_EC2https://pages.awscloud.com/rs/112-TZM-766/images/20190305_AWS-Blackbelt-EC2.pdf より)

同様の表現は AWS ドキュメントでも行われています。

Instance types - Amazon Elastic Compute Cloud より)

これらを素直に読めば、「インスタンスファミリー」が指すのはCのみです。 *1 個人的な感覚としてはそれには違和感があり、C5dまで含めて「インスタンスファミリー」と呼びたいです。

公式の表現をいくつか見繕って、どのように呼ばれているかを確認してみました。

まとめ

  • 「インスタンスファミリー」は文脈によって指す対象が変わる
    • C5d.xlarge を例にとれば、
    • C:これだけを指して呼ぶこともある(ここでは「狭義のインスタンスファミリー」とする)
    • C5:追加機能があるのにここで区切って呼ぶことはない *2
    • C5d:ここまでを指すのが一番自然(ここでは「広義のインスタンスファミリー」とする)
  • サイズを含まずに「インスタンスタイプ」と呼ばれることもある
  • インスタンスファミリーまで含めて「インスタンスサイズ」と呼ばれることもある
  • 認識齟齬を避けるために、コミュニケーションの際にはどこのことを指しているかを伝えよう

アルファベット一文字でインスタンスファミリー??

冒頭の例の繰り返しになりますが、Cだけでインスタンスファミリーを指す、というのは違和感があります。図の表現の都合上そうなっているだけでは?と考えていたのですが、実際に説明に使われている例を見つけました。

202111_AWS_Black_Belt_AWS_EC2_introduction_pdf

ここでは世代や追加機能は含まないものを指してインスタンスファミリーと記されています。

また、「よくある質問」ページでは以下のように表現されている箇所もあります。(文章中の太字化はわたしによるもの。)

Q: C6g インスタンスの理想的なユースケースはどのようなものですか?

C6g インスタンスは、ハイパフォーマンスコンピューティング (HPC)、バッチ処理、広告配信、動画エンコーディング、ゲーム、科学的モデリング、分散分析、CPU ベースの機械学習推論のなどのコンピューティング集約型ワークロード向けに、非常に優れた料金パフォーマンスのメリットを実現します。C インスタンスファミリー全体でオープンソースソフトウェア上に構築されたアプリケーションをデプロイするお客様は、C6g インスタンスがインスタンスファミリー内で最高の料金パフォーマンスを実現する魅力的なオプションであることにお気付きになるでしょう。Arm デベロッパーは、クロスコンパイルやエミュレーションではなく、ネイティブ Arm ハードウェアでアプリケーションを直接ビルドすることもできます。

C インスタンスファミリーという表現がされています。世代や追加機能を含まないアルファベット一文字でインスタンスファミリーを表す、という用法はそれなりに一般的なようです。

それをここでは勝手に「狭義のインスタンスファミリー」と呼称します。 *3

世代と追加機能を含めてのインスタンスファミリー

先ほど見た「よくある質問」ページでは、以下のように世代数や追加機能まで含めてファミリーを表現する記述があります。(文章中の太字化はわたしによるもの。以降も同様。)

Q: インテル AVX-512 のサポートは、EC2 M5 ファミリーや M6i ファミリーを利用しているお客様にとってどのような利点がありますか?

(略)

インテルの AVX-512 は非常に優れた暗号化アルゴリズムの処理を実現し、暗号化のパフォーマンスオーバーヘッドの削減に役立ちます。これは、EC2 M5 ファミリーや M6i ファミリーをご利用のお客様が、パフォーマンスを犠牲にすることなく、よりセキュアなデータとサービスを分散環境にデプロイできることを意味します。

これを狭義のインスタンスファミリーの対として「広義のインスタンスファミリー」と呼ぶことにします。

このページでは、単に「インスタンスファミリー」と書かれた場合、それが広義を指す場合と狭義を指す場合のどちらも存在します。文脈から判断しましょう。

RI と SP に関連するのは広義のインスタンスファミリー

リザーブドインスタンス(RI)、Savings Plans(SP)ではインスタンスファミリーを意識する機会があります。

  • リージョナル RI におけるインスタンスサイズの柔軟性
  • EC2 Instanse SP におけるインスタンスファミリー指定

両者ともに、気にすべきは広義のインスタンスファミリーです。引き続きよくある質問から引用すると、以下が該当します。

▼RI

Q: アベイラビリティーゾーンとインスタンスサイズの柔軟性とは何ですか?

(略)

インスタンスサイズの柔軟性により、インスタンスファミリー内のあらゆるインスタンスサイズの使用に対して RI の割引料金が適用されます。たとえば、米国東部 (バージニア北部) で、テナンシーがデフォルトの m5.2xlarge Linux/Unix リージョン RI を所有しているとします。この RI の割引料金は、us-east-1a の 2 つの m5.xlarge インスタンスまたは us-east-1b の 4 つの m5.large インスタンスに自動的に適用されます。

▼SP

Q: AWS はどのようなタイプの Savings Plans を提供していますか?

(略)

EC2 Instance Savings Plans は料金が最も低く、リージョン内の個々のインスタンスファミリーの契約 (例: バージニア北部で M5 の使用量) と引き換えに、最大 72% の節約を提供します。これは、アベイラビリティーゾーン、サイズ、OS、またはテナンシーに関わらず、そのリージョン内で選択されたインスタンスファミリーのコストを自動的に削減します。EC2 Instance Savings Plans は、そのリージョンのファミリー内におけるインスタンス間で使用量を変更する柔軟性を提供します。例えば、Windows を実行する c5.xlarge から Linux を実行する c5.2xlarge に移動しても、自動で Savings Plan 料金の恩恵を受けることができます。

詳細が気になる方は、以下もあわせてご参照ください。

マネジメントコンソール「インスタンスタイプ」から確認する

EC2 コンソールの「インスタンスタイプ」では、さまざまな切り口でインスタンスタイプを検索できます。ここでは「インスタンスファミリー」という切り口がありますが、広義のものになっています。

InstanceTypes___EC2_Management_Console_family

フィルタリング項目には、狭義のインスタンスファミリーに該当するものはありません。

InstanceTypes___EC2_Management_Console_filter

個人的にはこれを正にして考えるのが好きです。

そのほかに表現で気になったこと

本題の「インスタンスファミリー」からは外れるのですが、インスタンスタイプ関連の用語についてさまざま調べる中で気になった点があるのでかいつまんでご紹介します。

日本語の翻訳の問題ではないことを示すため、英語版の表記を引用します。

そこを指してインスタンスタイプ?

インスタンスタイプのドキュメントで、「インスタンスタイプ」が広義のインスタンスファミリー相当の記載になっている箇所がありました。

Instance_types_-_Amazon_Elastic_Compute_Cloud_type

ここにも。

Instance_types_-_Amazon_Elastic_Compute_Cloud_family

Compute Optimizer のドキュメントでも同様の表現がありました。

Supported_resources_and_requirements_-_AWS_Compute_Optimizer

そこまで含めてインスタンスサイズ?

インスタンスサイズと言えばxlargeなどの部分のみを指すのかと捉えていましたが、製品ページでは前半部分も含めて「インスタンスサイズ」と表現されています。

Amazon_EC2_Instance_Types_-_Amazon_Web_Services

これらの用語はあまり厳密に考えすぎない方が良さそうですね。

終わりに

「インスタンスファミリー」はどこを指すの?という疑問を調べてみました。

狭い意味ではアルファベット一文字の部分、広い意味ではそれ加えて世代、(もしあれば)追加機能を含んだ部分を指すこと分かりました。

Instancefamily_Blackbelthttps://pages.awscloud.com/rs/112-TZM-766/images/20190305_AWS-Blackbelt-EC2.pdf より)

インスタンスファミリーに限らず、インスタンスタイプ関連の用語はどこを指すかが文脈によって変わることがありますので、ドキュメント等を読むときは気をつけましょう。

また、コミュニケーションの際にはどこを意図しているかを添えた方が認識齟齬が起きなくて良さそうです。(「インスタンスファミリー」とだけ言った時にCと受け取る人とがC5dと受け取る人がいると困る。)

ふとした疑問からの調査でしたが、何らか参考になれば幸いです。

以上、 チバユキ (@batchicchi) がお送りしました。

脚注

  1. 余談ですがこの部分のアルファベットは大文字で表されたり小文字で表されたりしますね。今回は大文字で統一します。
  2. 単純に違和感があるのと、そのような用法は見つけられなかった
  3. こういったときにどっちが広義でどっちが狭義だ?と悩んだのですが、アルファベット一文字の方がマイナーである印象であること・囲った時に範囲が狭くなることからこちらを狭義にしました。