AWS マルチアカウント統制下での Savings Plans 購入戦略を理解する

記事タイトルとURLをコピーする

カスタマーサクセス部 佐竹です。
本ブログでは、AWS Organizations を利用したマルチアカウント統制下における、Savings Plans の購入戦略について解説します。

はじめに

AWS Organizations がエンタープライズ企業への AWS 導入の要となってきている近年、マルチアカウント統制と同時にマルチアカウントにおける「コスト最適化」への解答が求められています。

そしてコスト最適化においては、多くのお客様で Savings Plans がその解答となっており、実際に購入及び運用されています。

ただ、複数の AWS アカウントを運用している中で「どのアカウントで Savings Plans をどの程度購入するのが最適なのか?」というお問い合わせをよく頂きます。

この疑問への解答として、今回はマルチアカウント統制下においての Savings Plans の購入戦略を大きく3つご紹介させて頂き、それぞれの特徴を説明します。

また、本ブログは Savings Plans の仕様にかなり踏み込んだ内容となっておりますため、上級者向けの内容となっております点ご容赦ください。

Savings Plans に関するブログのご紹介

本ブログでは Savings Plans の仕様については詳しくは解説致しません。そのため Savings Plans の仕様や効果については、以下にご紹介しますサーバーワークスエンジニアブログの各記事をご参考ください。

Savings Plan と Reserved Instance の比較

blog.serverworks.co.jp

Savings Plans はどのように適用されるのか?

blog.serverworks.co.jp

Savings Plan に関するよくある質問

blog.serverworks.co.jp

Reserved Instance 及び Savings Plan を感覚的に理解するスライドを公開しました

blog.serverworks.co.jp

Savings Plans 購入戦略

最初に Savings Plans 購入戦略を大別し「3つ」表形式で記載します。

# シナリオ SP を購入するアカウント 割引共有
1 組織全体でコスト削減効果を最大化したい SP 購入専用アカウント 有効
2 各 AWS アカウントでコスト削減に取り組むが、
Savings Plans が無駄になることは避けたい
各 AWS アカウント 有効
3 各 AWS アカウントでコスト削減に取り組みたい 各 AWS アカウント 無効

それぞれ詳しく説明していきます。

Savings Plans の重要な仕様について

それぞれのシナリオの説明の前に、その前提として知っておく必要がある仕様を以下に記載します。

Savings Plans はそれを購入したアカウントに最初に適用される

Savings Plans はそれを購入した AWS アカウントが優先的に(最初に)適用される仕様です。

以下はその仕様を説明している AWS 公式ドキュメントの一文です。

In a Consolidated Billing Family, Savings Plans are applied first to the owner account's usage, and then to other accounts' usage.

https://docs.aws.amazon.com/ja_jp/savingsplans/latest/userguide/sp-applying.html

このため、Savings Plans を購入したアカウントで Savings Plans が全て消費されるのであれば、他のアカウントに適用されることはありません。

割引共有の有効/無効について

Reserved Instances や Savings Plans を購入した後に発揮されるそのディスカウント(コスト削減)の機能は、組織における支払いアカウントの設定によって「共有される/共有されない」が決まります。

これが「discount sharing (割引共有)」設定であり、マネジメントコンソール上では以下の通り「RI and Savings Plans discount sharing」と記載されます。

RI and Savings Plans discount sharing

デフォルト、全ての AWS アカウントは上画像の通り左側の「RI and Savings Plans discount sharing enabled」のグループ内に位置します。

2023年6月以降の設定画面

なお、2023年6月頃に UI がアップデートされ、上記の通りになりました。ただ、設定ができる項目については以前と変わりません。

本設定が有効(Activated)の場合、もし Savings Plans を購入したアカウントでそのコミットメントが「余る」ことがあった場合には、他のアカウントに Savings Plans の適用対象があればそちらに割引の適用が行われるため、Savings Plans が無駄なく消費され切ることが期待できます。

なお、以下が本機能に関する AWS 公式ドキュメントです。

docs.aws.amazon.com

このように、コスト最適化には非常に有効に思える割引共有機能ですが、しかし意図せず他アカウントのコスト最適化を行ってしまう可能性があります

例えば、アカウントAアカウントB のコスト最適化を行ってしまった場合を考えてみましょう。この時に、もしそれぞれのアカウントの管理部門や部署が異なると、定められた予算の都合で辻褄が合わない場合が出てきてしまう恐れがあります。

このような場合は、アカウントA の中から余った Savings Plans が外へと出てきてしまわないように、アカウントA を「RI and Savings Plans discount sharing disabled」へと移動させてしまう、という使い方がなされます。

このように「割引共有の無効化」へと移動がなされた アカウントA の中からは、二度と余った Savings Plans が出てきたりはしません。しかし、Savings Plans の余りが消費し切られず、無駄になってしまう可能性が出てきます。

「割引共有の有効/無効」のどちらが良いかは、コスト最適化を優先すべき(有効にする)か、部署の枠組みを優先すべき(無効にする)か、企業によって判断が異なってきます。

2つの仕様を鑑みた Savings Plans の適用順

このため、マルチアカウント統制下において、Savings Plans は以下の動作をします。

  1. Savings Plans を購入したアカウントに適用対象のリソースがあるか確認をする
  2. 適用対象のリソースがある場合、そのコストを Savings Plans のコミット金額に応じてコスト削減効果の高いリソースから順にディスカウントする
  3. アカウント内に Savings Plans のコミット金額に足る適用対象のリソースがなく、割引共有が有効の場合は、他のアカウントに Savings Plans のディスカウントが移動する
  4. Savings Plans のコミット金額に足るまでディスカウントが行われ、コミット金額を消費し切った時点でディスカウントが停止する
  5. もし Savings Plans のコミット金額に足る適用対象のリソースがない場合、Savings Plans は1時間ごとにそのディスカウント権利が破棄される(=無駄が出る)

ここまでで一旦、本ブログに関連する重要な仕様の説明を終えます。

ここから、本題の購入戦略の解説です。

戦略1. 組織全体でコスト削減効果を最大化したい場合

戦略1

マルチアカウント統制下において、Savings Plans のコスト削減効果を最大化するには以下の通りとします。

  • 「Savings Plans 購入専用アカウント(図ではコスト最適化専用アカウントと記載)」を払い出し、本アカウントで Savings Plans を購入する
  • 「Savings Plans 購入専用アカウント」にはリソースを作成しない
  • 割引共有を全アカウントで「有効」とする

このように Savings Plans を購入した場合、Savings Plans を購入したアカウントに適用対象のリソースがないため、先の適用順の「1~2」がスキップされ「3 (他のアカウントに Savings Plans のディスカウントが移動する) 」から開始されます。

この時、その他全ての AWS アカウントにおける「コスト削減効果の高いリソース」を上から順に Savings Plans がディスカウントしてくれるため、組織の AWS アカウント全体で最もコスト最適化効果の高いディスカウントとなります。

よって、組織全体でコスト削減効果を最大化したい場合には、本購入戦略が最も効果的となります。

注意点

この戦略を採用する場合の注意点は Savings Plans の支払いを誰が(or どの部署が)持つか、という点です。

Savings Plans はそれをコミット(購入した)アカウントに支払いが発生します。ざっと表にまとめると、おおよそ以下のような費用請求となります。

# 費用の種類 請求アカウント 実例
A. Savings Plans 購入額 Savings Plans を購入したアカウント +$7/h
B. オンデマンド費用(定価) リソースを保有するアカウント +$10/h
C. Savings Plan Negation リソースを保有するアカウント -$10/h
合計支払い額 --- +$7

この表は、本来 $10/h の AWS 利用料が、Savings Plans のディスカウントによって 30% 値引きとなり、$7/h まで下がる場合の例です。

この場合、リソースを保有する各アカウントの費用は「B. オンデマンド費用(定価)」と「C. Savings Plan Negation」が相殺され $0/h となります。よって、実費用は「Savings Plans を購入したアカウント」つまり「Savings Plans 購入専用アカウント」でのみ発生することとなります。

この場合、「Savings Plans 購入専用アカウント」の費用をどう分配するのかがポイントになります。この支払いをどのように取り扱うかは、予め決めておくことを推奨します。

マネジメントアカウントで Savings Plans は購入しない

戦略1は「ディスカウント対象のリソースがないアカウントで Savings Plans を購入する」ということではあるのですが、マネジメントアカウントでの Savings Plans の購入は推奨されません。

マネジメントアカウントは、管理のみにフォーカスしてご利用ください。

戦略2. 各 AWS アカウントでコスト削減に取り組むが、Savings Plans が無駄になることは避けたい場合

戦略2

先に紹介しました「戦略1」では、「Savings Plans 購入専用アカウント」の費用をどうするのかが肝でした。

正直なところ、日本企業では「戦略1」は請求の観点から採用が難しいこともあります。この場合には「戦略2」として「各アカウントで Savings Plans を購入する」を代替案として提案します。

この場合の「割引共有」ですが、「Savings Plans に無駄が出ることは避けたい」という観点から、一時的にアカウントを跨いでしまったとしても「割引共有を有効とする」ことをコスト最適化の観点から推奨しています。

戦略2ではどのように Savings Plans の推奨を閲覧可能か?

Savings Plans の Recommendations (推奨) 機能には「Recommendation level」で「Linked account」のラジオボタンが用意されています。

Linked account

これを用いることで、各 AWS アカウントごとにどれだけ Savings Plans を購入すべきか判断が可能です。

ただし、Linked account レベルの Savings Plans の推奨値合計は、Payer レベルの推奨よりも (つまり戦略1よりも) 多くの場合で下落した(少額の)推奨額になる点に注意してください。一般的には Payer レベルで「全てのアカウントを1つの AWS 利用料として」分析するほうが推奨額は上昇する(高額となる)傾向にあり、結果的にコスト削減効果も最適となる場合が多い状況です。

この点については、AWS 公式ドキュメントにも以下の通り記載されています。

Recommendations at the management account level are calculated considering usage across all of the accounts in your AWS organization that have RI or Savings Plans discount sharing enabled, to recommend a commitment that maximizes savings across accounts. Member account recommendations are calculated at the individual account level, to maximize savings for each isolated account.

https://docs.aws.amazon.com/ja_jp/savingsplans/latest/userguide/sp-recommendations.html

注意点

戦略2では「割引共有を有効とする」という点に注意が必要です。

これはつまり、「アカウント内に Savings Plans のコミット金額に足る適用対象のリソースがなく、割引共有が有効の場合は、他のアカウントに Savings Plans のディスカウントが移動する」という動作が発生することを示唆しています。

コスト最適化の観点からは、この動作は好まれるものですが「自部署の AWS 予算が、他部署の AWS 予算として使われることは許容できない」という意見もあります。よって、割引共有が好まれない場合、次にご紹介します戦略3を採用することになります。

戦略3. 各 AWS アカウントでコスト削減に取り組みたい場合

戦略3

上図の通り、戦略3は「戦略2における割引共有を無効とした」戦略です。

この通りに、全てのアカウントで「割引共有を無効」とした場合には、アカウントを跨いでの Savings Plans の適用が一切行われないため「自部署の AWS 予算が、他部署の AWS 予算として使われることは許容できない」という場合に特に有効です。

本戦略は、戦略2で Savings Plans を利用開始したものの、アカウントを跨いでの Savings Plans の適用が発見されたために、後追いで採用される場合があります。

戦略3ではどのように Savings Plans の推奨を閲覧可能か?

割引共有が無効になっているアカウントの推奨は、「Recommendation level」を「Linked account」に設定することで確認が可能です。

ただし、割引共有が無効になっているアカウントは、「Payer」レベルでの推奨に含まれない点に念のため注意してください。

注意点

戦略3では「割引共有を無効とする」という点に注意が必要です。

共有が無効であるため「Savings Plans のコミット金額に足る適用対象のリソースがない場合、Savings Plans は1時間ごとにそのディスカウント権利が破棄される」動作となり、Savings Plan が無駄となってしまう可能性があります。

戦略2と戦略3を組み合わせる場合

一部のアカウントを「割引共有を有効」とし、残りのアカウントを「割引共有を無効」とする、という戦略2と戦略3を組み合わせるパターンも採用実績があります。

enabled と disabled を組み合わせる

ただ、このパターンはマルチアカウント統制下で Savings Plans をある程度運用した結果としてここに辿り着く形での採用がほとんどです。

まずは戦略1~3の選択からはじめていただければ幸いです。

まとめ

本ブログでは、AWS Organizations を利用したマルチアカウント統制下における、Savings Plans の購入戦略について解説いたしました。

また3つの戦略においてはそれぞれ環境概略図を掲載し、さらに各注意点も合わせて記載しました。加えて Savings Plan Negation 含めた Savings Plans 購入後の費用請求についても掘り下げています。

最後に、序盤に掲載しました戦略一覧を改めてこちらでも紹介させて頂きます。

Savings Plans 購入戦略

# シナリオ SP を購入するアカウント 割引共有
1 組織全体でコスト削減効果を最大化したい SP 購入専用アカウント 有効
2 各 AWS アカウントでコスト削減に取り組むが、
Savings Plans が無駄になることは避けたい
各 AWS アカウント 有効
3 各 AWS アカウントでコスト削減に取り組みたい 各 AWS アカウント 無効

マルチアカウント統制下では、これら3つのいずれかの戦略で Savings Plans の運用を開始することになるかと存じます。

私の個人的なお勧めは最もコスト削減効果の高い"戦略1"なのですが、日本企業の慣習においては "戦略2"もしくは"戦略3"が好まれている感覚を受けます。

「割引共有の有効/無効」については、コスト最適化を優先すべき(有効にする)か、部署の枠組みを優先すべき(無効にする)か、企業によって判断が異なってきますため、部署関係者や場合によっては経理や CCoE (Cloud Center of Excellence) 等で協議ください。

本ブログ記事は Savings Plans 上級者向けの内容となりましたが、マルチアカウント統制における AWS コスト最適化運用の具体的な例として、各戦略が参考になれば幸いです。

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。