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 来说,所作出的承诺就是

  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:

当然以上 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