【阅读原文】戳:云原生成本精细化管理实践:企迈科技的成本中心建设之路
前言
企迈科技成立于2018年,是一家专注于线下门店数字化经营的SaaS服务商,目前已服务了包含沪上阿姨、霸王茶姬、呷哺呷哺、永和大王等2000多家知名连锁品牌,覆盖50多万家门店和超过8亿消费者,年处理交易额数千亿元。
随着公司业务的快速扩展和规模的持续扩大,企迈对云计算资源的需求也随之快速增长,在阿里云的投入逐年增加。目前,企迈已广泛使用了阿里云30多种不同的服务,包括计算、存储、网络、数据库、人工智能等多个领域。
然而,在公司初期发展过程中,云成本管理并没有得到足够的重视,导致资源的使用没有经过精细化的流出管控。随着业务量的增大和云服务的复杂化,出现了资源冗余和浪费的现象,影响了公司的财务预算与资金流动的健康性。
为了解决这一问题,企迈决定实施成本中心建设,提升成本控制的透明度和合理性,减少不必要的资源浪费。该项目的核心目标不仅是实现云资源的优化配置,还要为管理层提供清晰、实时的成本数据分析,帮助管理层做出更加精准的决策。通过精细化的云成本管控,逐步实现成本降低、资源合理分配和更加高效的云产品使用。
核心建设难点
云资源种类繁多,部分资源被多部门共享,难以建立资源和部门之间的映射关系。
初期企迈评估了阿里云财务单元方案,通过资源标签建立实例账单和部门的映射关系,标签内容包括:
• Department:表示这个实例的账单属于哪个事业部。
• Env:表示这个实例的账单属于哪个环境。
• app_name:表示这个实例的账单属于哪个应用。
但是企迈考虑到当前组织和业务架构的复杂度,给30多个云产品的每个实例打标签是一项非常繁重的工作。另外,如果使用财务单元方案,还需要额外解决容器分账的难题。
业务70%以上使用容器化部署,如何解决容器分账是成本中心建设的重中之重。
企迈目前绝大多数的业务部署在容器服务ACK集群,如果无法解决容器分账问题,70%以上的资源账单则无法得到分摊。然而,传统分账方案无法适用于容器场景,主要由于:
• 容器场景Pod作为最小部署单元,和云资源不存在强绑定关系,具有动态性,生命周期也通常短于云资源。
• 计算节点可能被多个应用共享,要准确拆分一个应用的账单,需要考虑动态成本分摊。
资源成本分摊情况复杂,不同资源需要依赖不同的分摊规则。
除了容器存在资源共享问题,数据库、MQ、CDN等云资源也被多个应用共用,且依赖不同维度、不同策略的分摊规则。比如:
• 对于MQ产品,需要根据TPS动态计算分摊比例,并将一个MQ实例的费用按比例分摊给多个应用。
• 因为容器产品的计算资源是池化的,需要将多个ECS实例的费用按比例分摊给多个应用。
• 部分产品无法准确按使用量计算分摊比例,需要手动定义静态分摊比例。
解决方案
通过CMDB解决实例账单与事业部的映射关系
企迈选择使用开源CMDB维护账单和部门的映射,并自定义了如下层级关系:
其中,SaaS->BU->Group->App属于一对多的关系, App->云资源则是多对多的关系。
成本中心每天会定时从账单中心同步全量实例账单,对于其中每个实例ID,反向查询属于哪个应用,再查询应用属于哪个组、哪个事业部,最后对原始账单加上这几个维度的字段,从而实现应用、部门维度的映射关系建立。
基于ACK Cost V2 API实现容器分账
企迈使用阿里云托管版ACK集群,常驻资源选择包年包月节点池,同时利用按量付费的弹性节点池应对资源波动。
首先分析企迈使用的托管版ACK集群成本组成,包括:
• ACK集群管理费用
• ECS节点费用(占比90%以上)
• 负载均衡SLB费用
• 云盘或NAS等存储费用
• 其他
对于集群使用的网络、存储资源,可以使用前面所述的CMDB建立和应用的映射关系,并且这类资源通常被应用独占,可以清晰分摊成本。
对于集群的计算资源,由于应用和ECS节点是多对多关系,需要结合分摊策略进一步拆分。ACK提供了Cost V2 API,遵循CNCF OpenCost社区标准,支持计算任意历史时间段集群的成本分摊,同时支持多维度的过滤、聚合和闲置成本处理逻辑。
企迈通过Cost V2 API,查询集群成本按应用维度聚合,即每个Deployment成本在总成本的占比。然后,成本中心会在每天定时同步账单时,对包含ack.aliyun.com标签的ECS账单先做整合处理,把同一个集群的ECS账单聚合求和后再存入数据库。最后,使用每个应用的成本占比去分摊集群ECS节点费用,成功将对集群计算资源成本准确分摊到了每个应用。
基于以上分摊方式,企迈一个容器应用的成本组成:
应用成本 = 集群ECS费用 * 应用成本占比 + 对应SLB费用 + 对应云盘/NAS费用 + 集群公共费用 * 应用成本占比
定义多维度资源成本分摊策略,满足不同场景的分摊规则
针对不同资源分摊场景,企迈定义了两类分摊规则:
• 指定静态分摊比例
• 使用动态分摊比例,基于指标动态计算资源每日的分摊比例
例如:
• static:指定的静态分账比例,主要对一些难以使用指标衡量的产品进行分摊,例如直接认定对于一个云资源,A应用成本占比40%,B应用占比60%。
• dynamic:cost_v3:对于容器资源的动态分账比例,通过阿里云ACK Cost V2 API 动态计算。
• dynamic:mq_tps: 对于MQ资源的动态分账比例,根据TPS来动态计算。
• dynamic:hot_url: 对于CDN资源的动态分账比例,根据每日URL的访问量计算。
总之,动态比例对应的其实就是一个可以获得应用成本占比的方法,在同步账单的时候对共享的资源账单会进行拆分处理从而分摊到对应的部门。
建设成果
企迈月账单概览
日账单明细
分账规则配置
总结
在数字化浪潮的推动下,企迈科技以成本中心为抓手,完成了一次从粗放式扩张到精细化治理的蜕变。这一实践不仅解决了云资源分账的技术难题,也反映了高速发展的企业在规模、成本与效率之间的平衡之道——Finops云成本管理并非“削足适履”,而是通过技术与数据的协同,让资源投入和业务价值真正对齐,为业务健康增长提供持续保障。
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。
获取关于我们的更多信息~