Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マルチアカウント環境での、そこまでがんばらない RI/SP 運用設計

wa6sn
March 27, 2025

マルチアカウント環境での、そこまでがんばらない RI/SP 運用設計

AWSコスト 春の総決算2025 https://srest.connpass.com/event/345078/ で話しました。

訂正:
スライドでは SP のリマインドに get-savings-plans-utilization API を使用している、と記載していますが、実際のスクリプトでは get-savings-plans-utilization-details API を使用していました。
https://docs.aws.amazon.com/cli/latest/reference/ce/get-savings-plans-utilization.html
https://docs.aws.amazon.com/cli/latest/reference/ce/get-savings-plans-utilization-details.html

wa6sn

March 27, 2025
Tweet

More Decks by wa6sn

Other Decks in Programming

Transcript

  1. $ whoami @wa6sn(わらしな) 株式会社ギフティ / エンジニア 弊社の年度初めは 1 月なので、3 月は総決算シーズンではなかったり

    CCoE っぽいこと、データ基盤、セキュリティ、データベースなど 社内 ISUCON 主催や AWS Gameday の企画、技術広報っぽいことなども 話したやつとか https://speakerdeck.com/wa6sn 2
  2. 弊社の前提 AWS Organizations を利用していて、170+ の AWS アカウントが存在します リセラーを利用していません 概ねプロダクトごとにアカウントがあります。アカウントの切り方から開発者に お任せしていて、stg,

    prd のように環境ごとに作成されるケースもあります 個人用 sandbox や stg 系アカウントを除くと、80 アカウントぐらい 横断 SRE のような存在は、今は居ません 各開発チーム(2-6 人ぐらい)が全員、インフラからアプリまでやっているイメージ エンジニアは合計 60 人ぐらい 5
  3. おさらい|Reserved Instances(RI) https://aws.amazon.com/jp/ec2/pricing/reserved-instances/ (EC2) おなじみ一定期間継続して利用することを前提に、 利用料金に対して割引を受けられるサービス EC2, RDS, OpenSearch, ElastiCache,

    MemoryDB, DynamoDB, Redshift が対象 サービスに内包された(?)概念なので、購入時の導線も各サービスから リージョンやインスタンスタイプなど、色々な条件を指定して購入する 「ap-northeast-1 の r6g.large を 2 つ、1 年間分前払いで!」みたいな買い方 「リソースに対して」 前払いをするイメージ 6
  4. おさらい|Savings Plans(SP) https://aws.amazon.com/jp/savingsplans/ おなじみ一定期間継続して利用することを前提に(ry コンピューティング系サービス(EC2, Fargate, Lambda)と SageMaker が対象 RI

    と異なり、Billing and Cost Management から購入する RI よりもかなり柔軟に適用できる 「一時間あたり 5 USD 分は確実に使います!」みたいな買い方 「コミット額に対して」 前払いをするイメージ 7
  5. おさらい|RI/SP の割引共有 https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/ri-turn-off.html 一括請求を利用・共有設定を有効にすると Organizations 内で RI/SP を共有できる まず購入したアカウント内で RI/SP

    の適用を試みるが、もし未使用のものが 残ってしまったら、Organizations 内の他のアカウントで適用を試みるもの このとき、削減額が最も大きいアカウントが優先される 共有設定は AWS アカウント単位で ON/OFF の制御のみ可能 「特定の Organizational Unit でのみ共有」は出来ない 8
  6. RI か SP, どっちがいいのか Management Console いわく、どっちも使えるシチュエーションなら SP を推奨 「SP

    は RI より割引率が渋い」と言われがちだけど、Compute SP ではなく EC2 Instance SP を選んだり、柔軟性を捨てれば RI 同等の割引率にはなるはず 多くのケースでそのはず 9
  7. RI/SP を運用する際の課題 RI や SP のサービスの使い分けを理解したり、 様々な適用条件を理解して最適な購入条件を探すのは結構たいへん 特に専任 SRE のような存在が居ない弊社では、プロダクト開発者への負担になる

    悩んだ人件費 > 節約額 となっては本末転倒 一方、組織の管理者に役割を集約しすぎると、コスト最適化の力学が働きづらい まとめて代理購入してもいいんだけど、一時的なスペックアップといった 各サービスの事情を加味しきれない そもそもサイズの大きすぎるインスタンスなどは、開発者側で気づいてほしい 10
  8. そして、弊社ではこうなった ベストよりも、まずは大失点を防ぐ方針 「一定額以上節約できる」とレコメンドされたら RI/SP を買う SP 対象のサービスは SP を優先する。種別は Compute

    Savings Plans を標準とする 節約額のしきい値は 200 USD/月 程度に決め打ち 低予算で運用されがちなインスタンスは、管理のオーバーヘッドが勝ると判断 いずれも購入時は「全額前払い、1 年利用」に統一する → "RIfactor" という自前ツールでこれを機械的に運用する 11
  9. 13

  10. RIfactor の仕組み|レコメンド 「RI/SP のレコメンデーション API」 の結果を一定の節約額が見込めるものに 絞り、読みやすく整形して GitHub Issue として起票

    + Slack 通知している RI なら $ aws ce get-reservation-purchase-recommendation --service は EC2 以外 を対象 SP なら $ aws ce get-savings-plans-purchase-recommendation --savings-plans-type COMPUTE_SP に統一 いずれも --account-scope LINKED --lookback-period-in-days THIRTY_DAYS \ --term-in-years ONE_YEAR --payment-option ALL_UPFRONT 実装が楽だったので Payer アカウントから実行している 14
  11. RIfactor の仕組み|リマインド 「今持っている RI/SP の利用状況を確認する API」 の結果から、 期限切れが近づいたものに対してレコメンド同様の操作をしている RI なら

    $ aws ce get-reservation-utilization , SP なら $ aws ce get-savings-plans-utilization UtilizationPercentage が低ければ継続購入しない 16
  12. モニタリング 組織の管理者として、RI/SP の適用状況を定期的に確認している Billing and Cost Management サービスで特に見ておきたいのは、以下 2 つ

    Utilization report: 持っている RI/SP が使われているか できるだけ 100% を目指したい これが下がると「買ったけど使われていない理由」を調べることになる Coverage report: RI/SP 対象サービスについて、どれだけカバー出来ているか できるだけ高い割合を目指したいが、ここの割合は金額基準ではなく 時間基準 なので、割合そのものの深追いはしなくていいと思う 安い T 系インスタンスをいっぱい並べるだけで割合が下がってしまう Reservations coverage breakdown は見るべき 19
  13. Coverage report の Reservations coverage breakdown 各インスタンスクラスのグルーピングで、Average coverage や On-Demand

    cost(いくら分オンデマンド料金で払っているか) が確認できる On-Demand cost でソートすると伸びしろが分かりやすい 画像は RDS の RI の例 弊社の RI/SP 運用では、t4g や t3 のような安価で小さい開発系インスタンスは、 まだ RI/SP の追加購入による削減余地がある、ということが分かる 20
  14. これ以上を望むなら? コスト削減額が少額なものは見逃しているんだけど、 Payer アカウントからまとめ買いしてしまってもいいかもしれない だいたいは t4g や t3 のような開発用途で、RDS なら

    t4g あたりは安牌な気がする 特に SP なら 3 年単位でガバッと買えると思う 今回の運用設計はあくまでベースラインであり、 RIfactor のレコメンドを無視して買ってもいいことになっている チーム内に「分かる人」が居るなら、Compute SP ではなく意図して EC2 Instance SP を買ってもいい。どっちにしろレコメンドはされなくなれば OK 22
  15. おまけ: 細かいハマリポイント RI の Size flexibility の対応状況 RDS: 2017 年ごろから対応している

    ElastiCache: 2024/10 から対応するようになったので、古い情報に注意 OpenSearch と Redshift: 対応していない 子アカウントで買った RI/SP は、子アカウントを完全に削除すると、 割引共有をしていようが、その利用権も一緒になくなってしまう あくまで子アカウントに紐づいた権利だから All Upfront で買ったあとにそのアカウントを削除すると、払い損なので注意 23