Cost Management
Methods
Tools
随着业务的发展,也随之暴露出了相关问题,比如:企业云财务管理者每个月可以收到不同的公有云账单,面对不同的云账单数据格式、不同的云服务计费方式,他们随后就开始了痛苦的账单管理和运营工作,成本拆分就是账单管理任务中最典型的工作场景之一。
云成本拆分是将云成本关联到每个成本中心的过程。在拆分过程中,需要拥有集中、可控和一致的成本分配策略,并且能够让团队了解云成本是如何分配的。
常见问题
在传统 IDC 或者私有云环境下,企业 IT 基础设施的采购是根据业务发展需要,由业务部门发起的定向采购需求,整个基础设施的交付过程将严格按照企业的预算审批流程、采购流程和交付流程执行,其成本按团队或项目可以被很好地管理。
但是业务上云之后,业务通过云上提供的自动弹性伸缩策略以及 IT 运营模式的改变(由买到租),让业务部门可以很轻松的获取到 IT 基础设施资源,这样就完全打破了原有的自主可控的成本控制体系,导致云财务管理人员或各个业务线负责人需要为云上的成本进一步拆分,然而在拆分的过程中,会面临几个凸显的大问题:
云上共享资源的拆分
云上有一些共享资源需要进行成本方面的拆分,比如网络流量、共享带宽、CDN、对象存储,也可能会有共享的 RI 和 SavingPlan 等。如果不适当地分摊成本,无论工程师还是产品经理都无法全面了解他们的产品产生的实际成本,那就需要一套精细的拆分策略。
云服务计费方式的多样性
云厂商作为一个超级供应商,售卖产品种类不断增加,面对成百上千的产品类目、上万的 SKU 和计费项,而对于每种新资源,分账的方式方法并不一致,给成本拆分策略带来一定的复杂度。
云厂商对于标签分账的支持程度各不相同
在我们用云过程中,相信大家也发现竟然还有很多云服务不支持打标签,即使企业制定了成本标签规范,也无法满足共享资源的成本分摊。
IT 治理体系的缺乏
无论是业务部门自己开通资源还是运维同学协助开通云资源时,缺少成本标签或者标签不规范都属于 IT 治理体系不完善造成的,虽然标签不是万能的,但还是希望企业用户能够制定并应用合理规范的标签策略,避免后续云治理的第一步是标签治理。
受 RI、SavingsPlan 以及 Credit 影响,账单难以体现实际用云成本
在 AWS 月度账单数据中,账单体现的是该账期的实际费用支出。但是如果发生了 RI 采购预付费或者 Credit 抵扣等情况,云账单就会跟实际资源产生的云成本不一致,无法体现资源实际使用过程中产生成本的变化趋势,所以需要根据原始账单将重新计算 RI 和 Credit,还原实际云费用。
常见场景
根据企业支付云费用的不同方式,企业成本拆分场景大致分为两种,一种是自建企业组织,并直接向云厂商支付费用的企业应用场景;第二种是作为云厂商授权的渠道商,为客户代付云费用的企业应用场景。为第三方客户代付云费用时,客户的账户是渠道商组织的成员账户,客户在控制台上能够看到月度账单,但无法对账单进行账单明细设置等操作。
企业作为自建组织直接向云厂商支付费用
这种类型的企业客户把多云成本账单还原成真实用云成本,然后按指定分摊对象拆分出来即可,这里的分摊对象可以是业务线、部门、企业成员或项目,各个分摊对象独立的进行云成本计费和预算管理。拆分后的拆分结果可以共享给云财务管理人员、各团队负责人以及 CIO 等角色,很多互联网采用这种模式。
企业作为云厂商授权渠道商为客户进行成本拆分
有一些企业客户希望将自己账户关联到云厂商授权渠道商的组织里,可以得到更加优惠折扣的同时,也可以享受到渠道商提供的 PLES 服务,因为能作为云厂商授权的渠道商,一般都是具备一定技术能力的;此时的渠道商会为最终客户代付云上费用,因此渠道商就需要把云费用账单按指定的策略将原始云费用还原和拆分,将生成后的账单与明细发送给客户,客户收到明细账单后,再回到场景 1 进一步对云费用进行拆分。
成本拆分与 FinOps 文化理念相匹配
FinOps 是一种不断发展的云财务管理学科和文化实践,通过帮助工程、财务、技术和业务团队在数据驱动的支出决策上进行协作,使组织能够获得最大的业务价值。
FinOps 的特点是将问责制引入云支出,是财务责任文化变革带入云计算环境的可变支出模型的实践。
这里需要注意问责制不是我们平时理解的追究谁的责任,而是前面我们提到的将云成本分摊到不同的成本分摊对象,每个人或者部门都应该了解自己的云使用情况,确保将云上的支出可以控制在预算范围内,让云成本都终有归属。
FinOps 三个发展阶段:
- Inform: 获得成本分配的可见性,并通过向团队展示他们的支出和原因来建立共同的问责制。
- Optimize: 发现可以节省成本的机会,并执行成本优化策略。
- Operate: 组织可以定义可持续的自动化实施策略和流程,不断调整适配云资源,保证在不影响性能的前提下控制成本。
其中对于 Inform 阶段,就可以通过一些自定义的账单拆分策略,准确地将相关支出分摊到使用云的业务线或部门,让他们充分了解成本的来源,并在后续的云使用过程中做出明智的决策。
按云账号维度进行成本拆分
目前很多企业上云都选择基于资源目录管理的多账号模式。在这种模式下,每一个组织就是独立的账号。因此这个账号下的所有费用可以全部地计入这个组织的成本。对于多云场景下多账号模式,采用更标准的云账号命名方式也是很好的最佳实践。
按标签维度的成本拆分
对于多个分摊对象共享云账号的场景,则需要通过云成本标签的方式去区分资源和成本的归属。
在这个过程中,运维团队负责定义标签的用途和执行方式:
- 具备自动化交付能力的企业会把设置标签的逻辑内置到服务申请流程中(例如 BPM),保证所有资源申请都是被设置正确标签的;
- 如果用到了伸缩组,可以在伸缩组的资源模板配置中设置标签;
- 没有实现自动化的企业则可以选择手动在控制台打标签或者使用 UserScript 自定义脚本来后置标签。
- 通过 IaC 交付时,将标签以变量的方式传递到代码中,这种方式可以将级联资源也设置上标签。
无论以何种方式设置标签,成本标签将会展现在公有云的原始账单数据中,用户可通过配置分摊对象和标签的关系,完成对云上账单的拆分。
假如用户环境中,存有大量没打成本标签的资源或标签设置不合理,在 SavingsNow 成本拆分模块中,也可以为资源设置不同的本地标签,成本分摊时将会按照您设置的本地标签自动进行。
共享型资源的成本拆分
对于许多共享型的资源,例如 CDN,NAT 网关,带宽包,预付实例券(RI)预付款,云厂商没有提供更细粒度的分账方案。目前通常的做法是按照一个商议好的固定比例来进行分摊。
作为渠道商为第三方客户提供成本拆分
对于渠道商拆分账单的场景,账单数据处理过程相对麻烦,比如需要完成客户资源的二次定价、账单还原、特殊服务的折扣以及折扣后的折扣计算等,这时需要利用大数据处理流程,开发一些 ETL 数据清洗逻辑来协同完成。