AWS Savings Plans 介绍一 ── 基本知识


最近几个月我有相当一部分精力投入在云上(主要是 AWS)成本管理相关的工作上,涵盖了从资源管理到数据分析的内容。在这过程中接触了不少新的概念和计费方法,也专门为了理清其中的关系和相关的技术支持同学开过几次会,其中比较折腾人的应该就是 AWS Savings Plans 这个收费模型。因此准备写两篇文章来理清其中的一些知识。

这两篇文章会介绍如下内容:

  • AWS Savings Plans 相关的概念
  • AWS 平台上如何更好地观察 Savings Plans 使用情况
  • AWS Savings Plans 相关的数据结构及字段说明
  • 包含 AWS Savings Plans 的简单数据分析场景指导

作为第一篇,本文主要会进行 AWS Savings Plans 基本概念的介绍,以及进行相关的成本管理时可能接触到的小知识。

基本介绍

AWS Savings Plans 是本文介绍的主要对象,因此我相对详细地介绍在实际成本管理中需要了解的部分。

[AWS Savings Plans ](https://docs.aws.amazon.com/cur/latest/userguide/cur-sp.html)是一种预付费定价模型。 用户通过预先承诺一定的计算用量(按小时计算),在一定期限(通常是 1 或 3 年)内获得折扣。

对于以上定义,我们拆散解释:
“预付费定价模型” 指的是作为用户需要在使用服务之前预先支付费用,后续按照周期和用量从该预付款项中直接扣除。
通常这种收费模式会给用户带来一定的折扣,但也要求用户承诺一定的用量或期限。对于 AWS Savings Plans 来说,所作出的承诺就是

  1. 期限: “一定期限(通常是 1 或 3 年)”内使用相关服务
  2. 使用量: 在使用期限内承诺了按小时计算的使用量

在以上承诺范围内,对应 Savings Plans 的服务可以获得相应的折扣。
Savings Plans 提供了 All Upfront(全预付)、Partial Upfront(部分预付)、No Upfront(无预付)三种选项,预付款金额由高到底,折扣力度也由大到小,基本的内涵是一样的,本文为了帮助理解仅以 All Upfront 付款选项为例进行介绍。

从实际交易的角度来说,实际上就是用户在指定 “期限” 内的相关资源 “用量” 按折扣后的价格计算金额后预先支付给 AWS ,AWS 按小时从该预付款中拿走该“小时费”。小时费是固定的,这意味着:

  1. 如果用户实际用量不足承诺小时用量,AWS 仍会拿走固定的金额
  2. 如果用户实际用量超过了承诺用量,AWS 对于除了固定金额,对超出用量部分会按需收费

那么这种收费模式对于用户来说分别有什么好处和坏处呢?
对于用户来说最明显的好处是获得了折扣,降低了自身的计算成本,Savings Plans折扣有多种收费模式(参考 Cloud Cost Savings – Savings Plans – Amazon Web Services 本文不展开描述)用户可以根据自身场景和架构选择合适的模式,有一定灵活性。同时 AWS 相关的技术支持人员会帮助用户制定 Savings Plans 购买方案(包括在哪个帐号上购买、购买期限,用量协商…),这也能帮助用户调整架构,提升 SavingsPlans 的利用率。
但相对的,由于我们承诺了用量和期限,我们的使用也就受到了相应的限制,这个限制包括对供应商(AWS)的依赖,对实际用量调整的阻碍。以及因为预付款带来的现金流影响。

收费优先级

需要注意的是 ,Savings Plans 的所有者是 AWS 帐号(Account) 而不是组织(org)粒度的,同时 Savings Plans 是有扣款优先级的,扣款优先级主要与资源类型和帐号有关,关系如下

  1. 优先使用当前帐号的 SavingsPlans, 覆盖完当前帐号的 SavingsPlans 后可以使用其他帐号的共享的 SavingsPlans
  2. 在满足 1 的情况下,折扣力度最大的资源类型(不同类型的资源的 SavingsPlans 折扣力度不同)优先使用 SavingsPlans 进行覆盖

根据以上收费优先级和折扣力度差异,我们可以得到一个提高 Savings Plans 折扣力度的 tips:

使用部分不实际运行(或运行较少)Savings Plans 相关实例的帐号来购买 Savings Plans,使 Savings Plans 能优先按照折扣力度进行覆盖。

当然以上 tips 还需要结合公司实际业务情况来决策,比如是否需要优先保证某帐号的 Savings Plans 覆盖。

AWS 上的相关分析工具

AWS Cost Management 是专门用于提供 AWS 成本洞察的服务,其中的 Savings Plans 子目录下提供了 Savings Plans 相关服务,辅助我们进行分析的主要是 InventoryUtilization reportCoverage report 几项

Alt text

  • Inventory: 展示了当前帐号下的 Savings Plans 情况,包括状态(Status)、Type、承诺用量(Commitment), 起止时间
  • Utilization report: 主要用于展示 Savings Plans 的使用情况(用户对 Savings Plans 的承诺成本的使用情况)和获得收益。可以结合筛选条件查看 Savings Plans 的 花费、覆盖资源对应的原始花费、节省金额(前两者相减)。使用率越高意味着 Savings Plans 得到了越有效的使用,使用率不足 100% 说明没有完全利用 Savings Plans 。

Alt text

  • Coverage report: 主要展示 Savings Plans 对用户使用的符合条件的资源成本的覆盖情况。提供了按 服务(Service) 和资源类型 拆解进行分析的能力。计算方式是
    Coverage = (按需价格计算下被 Savings Plans 覆盖的资源的价格)/(按需价格计算下被 Savings Plans 覆盖的资源的价格 + 按需价格计算下未被 Savings Plans 覆盖的价格)
    因此 Coverage 越高,即 Savings Plans 覆盖的资源越多,即节省了越多钱。

一句话总结是,在日常分析的时候可以主要结合 Utilization report 和 Coverage report 使用,目标是使 Utilization 和 Coverage 都尽可能高,前者代表我们对 Savings Plans 使用的充分程度,后者代表 Savings Plans 为当前帐号资源的节省情况。

总结一下,本文主要介绍 AWS Savings Plans 的基本模型和常用的知识。下篇会介绍 Savings Plans 数据分析中涉及的概念、字段说明,并举几个典型场景说明用法。

Refs

comments powered by Disqus