ElastiCache のリザーブドノードについてまとめてみた

ElastiCache のリザーブドキャッシュノードは現行世代と旧世代とでタイプが違うのが紛らわしポイントですね。

コンバンハ、RI / SP おじさんです。

先日、EC2 向けの リザーブドインスタンス(RI)と SavingsPlans(SP)の比較表を作成しました。

似たような仕組みとして、ElastiCache ではリザーブドノード(リザーブドキャッシュノードとも)というものが用意されています。EC2 のリザーブドインスタンスとどのような違いがあるのか、まとめてみました。

ElastiCache リザーブドノードの要素

ElastiCache のリザーブドノードを構成する要素は以下の通りです。

ElastiCache_Reserved_node

EC2 のリザーブドインスタンスと比べればシンプルですね。

ノードの属性

以下を指定します。

  • リージョン
  • ノードタイプ( EC2 におけるインスタンスタイプのようなもの)
  • エンジン
    • Redis
    • Memcached

支払い期間

1 年か 3 年を指定します。3 年を選択した方が割引率が高くなります。

提供タイプ

現行世代向けと旧世代向けで内訳が異なります。後段で詳細を取り上げます。

リザーブドノード ID

一つの購入の単位に付与できる識別子です。複数の購入を行う場合、後から識別しやすいよう付与するとよいでしょう。

ElastiCache リザーブドノードの提供タイプ

購入対象のノードファミリーにより、選択できるタイプが異なります。それを表したのが以下表です。

ElastiCache

(コピペ用に CSV 形式のものも貼っておきます。)

"世代","最新タイプ","ノードタイプ(ファミリー)","選択可能なタイプ"
"スタンダード(現行)","●","cache.m6g","前払いなし / 一部前払い / すべて前払い"
"スタンダード(現行)","●","cache.m5","前払いなし / 一部前払い / すべて前払い"
"スタンダード(現行)","●","cache.r6g","前払いなし / 一部前払い / すべて前払い"
"スタンダード(現行)","●","cache.r5","前払いなし / 一部前払い / すべて前払い"
"スタンダード(現行)","●","cache.t3","前払いなし / 一部前払い / すべて前払い"
"スタンダード(現行)","","cache.m4","重度使用"
"スタンダード(現行)","","cache.r4","重度使用"
"スタンダード(現行)","","cache.t2","重度使用"
"レガシー(旧世代)","","cache.m3","重度使用"
"レガシー(旧世代)","","cache.r3","重度使用"
"レガシー(旧世代)","","cache.m2","軽度使用 / 中度使用 / 重度使用"
"レガシー(旧世代)","","cache.m1","軽度使用 / 中度使用 / 重度使用"
"レガシー(旧世代)","","cache.c1","軽度使用 / 中度使用 / 重度使用"
"レガシー(旧世代)","","cache.t1","軽度使用 / 中度使用 / 重度使用"

ノードファミリーは大まかに現行世代と旧世代に分かれます。現行世代の中でも M5、R5、T3 以降のファミリーとそれ以外が区別されます。(ここでは「最新タイプ」と表現。)

最新タイプ向けの提供タイプ

最新タイプのものは以下のいずれかを選択可能です。

  • すべて前払い
  • 一部前払い
  • 前払いなし

EC2 のリザーブドインスタンスと同じ考え方です。3つのタイプ間で比較を行うと以下となります。

タイプ 前払い 1時間あたりの料金 料金の発生
すべて前払い 多い なし 初回のみ
一部前払い 少ない 低い 初回+期間中は常に
前払いなし なし 高い 期間中は常に

現行世代の一部と旧世代向けの提供タイプ

現行世代だが最新でない M4、R4、T2 ファミリーと旧世代のファミリーは上記のタイプを選択できません。

以下のいずれかから選択することになります。

  • 重度使用(一部のファミリーでは唯一の選択肢)
  • 中度使用
  • 軽度使用

先述の表の通り、一部のファミリーでは重度使用のみを選択可能なことに注意してください。

3つのタイプ間で比較を行うと以下となります。

提供タイプ 前払い 1時間あたりの料金 料金の発生
重度使用 多い 低い 期間中は常に
中度使用 中程度 中程度 実行時のみ
軽度使用 少ない 高い 実行時のみ

どのタイプでも前払いが発生すること、重度以外はノードの実行時のみ 1 時間あたりの料金が発生することが最新タイプ向けと異なります。

リザーブドノードの購入のイメージ

購入する際のイメージを、2021年11月現在のマネジメントコンソールで確認してみます。購入する一歩手前まで進みます。

ElastiCache のサービス画面から、「リザーブドノード」→「リザーブドノードの購入」と進みます。

ElastiCache_Management_Console_Purchase

購入画面で各種項目を選択していきます。「提供タイプ」は先述の表の通り対応したもののみが選択可能なようになっています。

ElastiCache_Reserved_Node

(例えば旧世代の M3 を選ぶと、「重度使用」のみが候補に出てきます。)

ElastiCache_Reserved_Node2

必要な項目を埋めると、金額が表示されます。ノード数を選択し、次へ進みます。(ここではまだ購入は確定しません。)

ElastiCache_Management_Console_node_number

最終確認をし、「注文」を押下すると購入が確定します。本エントリではここまでで終えます。実際に購入する際には、入力内容に誤りがないよう注意してください。

ElastiCache_Management_Console_order

ちなみに、M2、M1、C1、T1 ファミリーのノードタイプはコンソールからは選択できないようになっていました。

ElastiCache リザーブドノードについてよくありそうな質問

よくありそうな質問を考えてみました。EC2 のリザーブドインスタンスとの比較がメインになっています。

予約購入はできるか?

できません。間違いのないよう慎重に購入しましょう。

購入後の変更・交換はできるか?

できません。間違いのないよう慎重に購入しましょう。

アベイラビリティゾーンの指定は必要か?

必要ありません。指定したリージョンに存在するノードであれば、どのアベイラビリティゾーンにあっても適用対象となります。

キャッシュノードサイズの柔軟性はあるか?

ありません。ここでの柔軟性とは、「同一ファミリーで異なるサイズのノードへの適用」を指しています。

例えば EC2 の RI では(条件を満たせば) c4.large のインスタンス 1 台分の RI を購入して c4.medium 2 台分に適用する、ということができます。

リザーブドノードではそういった考えはないため、途中でノードサイズを変更すると完全に適用対象外となります。

有効期限切れ前の通知はできるか?

できます。AWS Cost Expleore の予約の有効期限切れアラート機能を用いることで、期限の 60 日前、 30 日前、 7日前、当日に E メールでの通知が可能です。

これは EC2 、RDS、Redshift、ElastiCache、OpenSearchService の各種リザーブドインスタンス/ノードでサポートされています。

その他

そのほかの質問事項については、本家のよくある質問をご参照ください。

終わりに

ElastiCache のリザーブドノードについて確認しました。

現行世代と旧世代で選択できる提供タイプが異なることに最初は面食らいました。旧世代のものは、そのままリザーブドノードを購入するよりは、現行世代に移行してから購入した方がメリットが出るかと思います。(価格面というよりは、パフォーマンスの観点において。)

今後覚えるなら基本的には現行世代向けだけでよいと思いますが、旧世代向けもまだ選択可能ですしドキュメントや製品ページにも載っていますので、頭の整理の理解に役立てば幸いです。

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

参考