来源:得物技术
1
背景
随着得物电商、社区业务迅速发展,云计算已成为支撑业务运行的关键基础设施。然而,云计算的便利性和灵活性也带来了一系列云成本管理挑战,包括成本增速过快、成本归属不清晰、缺乏有效成本控制手段、对云厂商高度依赖等,因此云成本治理成为各公司的重要方向。作为快速发展中的互联网公司,得物在业务增长的同时,开展了成本治理和FinOps项目落地工作,实现年度云成本节省上亿元,成功抑制云成本的不合理上涨趋势。
此次分享得物FinOps实践经验,希望能为读者提供一些借鉴思路。
2
得物FinOps引入
2.1 什么是FinOps?
FinOps 是“Finance”和“DevOps”的综合体,强调运维过程中的成本管理和资源优化。
FinOps有一个权威组织,FinOps 基金会,该基金会是Linux 基金会发起的项目,致力于通过最佳实践、教育和标准来推动实践云财务管理学科。近年发展迅速,社区拥有超过 8,700 名成员,致力于解决云的爆炸式增长以及云成本管理挑战。
在当今数字化转型的重要时刻,FinOps不仅仅是一个将财务和技术结合起来的领域,而且是云计算的关键领域之一。通过FinOps,IT和财务部门可以更好地合作,实现更好的业务成果和财务可持续性。因此,越来越多的企业积极开展FinOps实践项目,并跨过了他们在实践中所面临的壁垒,得物正是一家在FinOps实践中持续探索的公司。
FinOps基金会对FinOps定义:
FinOps是一种不断发展的云财务管理学科和文化实践,通过帮助工程、财务、技术和业务团队在数据驱动的支出决策上进行协作,使组织能够获得最大的业务价值。
FinOps的核心是一种文化实践,通过跨职能团队协同工作,以实现更快的产品交付,同时获得更多的财务控制和可预测性。
FinOps的特点是将问责制引入云支出,FinOps是财务责任文化变革带入云的可变支出模型的实践,使分布式工程和业务团队能够在其云架构和投资决策中的速度、成本和质量之间进行权衡。
FinOps成熟度模型:
FinOps Framework定义了关于FinOps 的“爬、走、跑”成熟度特征。
在落地FinOps实践时,了解成熟度模型和指标可以帮助团队准确评估其当前水平,发现改进点和推进方向。例如,对于初步实践的团队,最初的重点可能是寻找成本和资源的可视化方法,而更成熟的团队则可能更加关注云开销和预算分析、成本优化和分配、以及团队间的协作和沟通等方面。
成熟度模型的应用,可以帮助企业实现可持续的FinOps成果,进而达到支出透明度和控制、优化云资源和实现最大化业务价值的目标。
FinOps成熟度级别 | 成熟度水平特征 | 指示性目标/KPI |
爬 | 很少的报告和工具测量仅提供对成熟能力的好处的洞察力为衡量成功而设置的基本 KPI围绕能力定义基本流程和策略组织内的所有主要团队都了解能力,但并未遵循解决“唾手可得”的计划 | 预测支出与实际支出准确性差异为 20%基于资源的承诺折扣目标覆盖率约为 60%应该能够分配至少 50% 的云支出 |
走 | 能力在组织内得到理解和遵循确定了困难的边缘情况,但决定不解决它们自动化和/或流程涵盖了大部分能力要求确定了最困难的边缘情况并估计了解决的工作量中到高目标/KPI 设定在成功的衡量标准上 | 预测支出与实际支出准确性差异为 15%基于资源的承诺折扣目标覆盖率约为 70%应该能够分配至少 80% 的云支出 |
跑 | 组织内的所有团队都理解并遵循能力正在解决困难的边缘情况为衡量成功设定了非常高的目标/KPI自动化是首选方法 | 预测支出与实际支出准确性差异为 12%基于资源的承诺折扣目标覆盖率约为 80%超过 90% 的云支出可以分配 |
2.2 FinOps实践路线
得物从2021年开始关注云成本效能。经过对FinOps体系深入研究,反复讨论,持续了近2年的落地实践,FinOps成熟度级别已逐步进入到 “跑” 阶段。下文会介绍得物FinOps建设的历程,以及各阶段行动路径,供读者参考。
结合公司现状,得物借鉴FinOps社区主推的成本洞察、成本优化、成本运营层层递进,多管齐下的方式开展得物FinOps落地。按技术驱动、业务驱动、运营驱动三个方面来推动机制流转。最终实现成本透明度和控制、优化云资源、并最大化业务价值。
3
得物FinOps构建历程
3.1 FinOps - Inform(Visibility & Allocation)
成本可视化阶段,FinOps基金会对企业云成本治理的第一步“爬”,就是需解决Inform(Visibility&Allocation) 可视化、账单分摊的问题,这是FinOps之旅的第一阶段,它赋予组织和团队可视性、分配、基准、预算和预测能力,使其有必要为智能决策提供准确和及时的可见性。
得物从2021年开始打造基于多云环境的资管与成本运营平台 - 成本中心,在这一阶段,优先支持了成本数据分摊能力,分摊到部门、业务域。支持成本预测、预算管控、成本结算等功能。
3.1.1 成本分摊
将成本按人头归属后,研发成本意识得到提升,开始关注项目资源的利用率。 多维度的成本拆分:部门维度、产品维度、业务维度和场景维度。 支持成本预测,当月、下月各部门成本预测,便于提前规划优化动作。
3.1.2 预算机制
预算编制:以半年或季度为预算周期,设置总体目标和要求,逐级分解到部门/项目,落实到具体负责人; 预算执行:根据预算规划业务,预算水位预警及工单审计联动; 预算考核:对照设定的预算指标,总结预算执行情况、差异分析、归因分析、改进措施,形成预算反馈报告。
3.1.3 新增成本收口
成本预估:在资源申请阶段,系统会自动进行成本预估,帮助研发人员更好地了解资源需求对成本的影响。 预算管理:可拉取部门预算水位,结合预估成本,综合展示申请资源对于本部门预算影响。 智能审批节点:结合预算和成本预估、预算信息,工单系统会自动添加相应的审批节点,确保资源申请的合理性和合规性。
3.2 FinOps - Optimize(Rates & Usage)
计费模式优化:包年包月计费&按量计费择优选择 空跑或低利用率资源巡检:制定不同巡检规则、及时释放闲置资源 服务器&&应用的完整生命周期管理:建立服务器或者应用的上下线管理制度确保不会出现死应用或者服务器
作为拥抱云原生不可或缺的一环,服务容器化的实践将提高资源利用效率,加快部署速度,并确保应用程序在不同环境下的一致性和可重现性。得物自2021年开始,在KubeOne的基础上建立了自己的容器平台,启动了全站容器化项目,成功完成了涉及数十个业务领域上千个应用的容器化改造,标志着得物容器化元年的开启。该项目的完成大幅提高了资源利用率,整体资源利用率环比上升了10%。此外,硬件成本和管理成本也得到了降低,应用程序的可靠性和可伸缩性也得到了提高。
垂直自动伸缩(VPA)
FinOps落地实践指的是一种运用自动化容器资源管理技术的方法,该技术能够根据容器实时使用情况自动调整所需的CPU和内存资源。使用垂直自动扩缩容技术(VPA),容器可以在实际需要的资源水平上运行,避免不必要的资源浪费和成本开销。
得物依托VPA和宿主机超售技术,启动了容器技术方案的实施,旨在降低基础设施成本。
服务画像
在实施FinOps的过程中,应用画像是解决单应用资源配额问题的一个有效方法。应用画像主要是通过描绘在一定时间周期内应用集群对资源需求的情况来达成这一目的。资源包括了cpu、内存、磁盘、网络等。应用画像不仅可以展示应用的当前状态,还可以通过对固定周期的CPU、内存等资源消耗数据进行分析,从而预估未来一段时间对某种资源使用的趋势。下图展示了应用画像的流程:
最终降本增效成果:
3.2.2 内部结算,资源售卖模式
3.2.3 混合部署
资源管理系统:实现应用画像、任务画像、节点画像,为精准调度提供数据决策支持
针对I/O资源竞争问题,不同的应用程序可以使用不同的磁盘挂载解决。此方法有效解决I/O资源竞争问题,改善应用程序稳定性和性能。此外,每个应用程序都有自己的磁盘分区,这使得备份和恢复数据更加方便。
同时,我们还优化了内核参数,以确保在线应用程序可以优先获得所需资源,而离线应用程序的CPU范围也可缩小。除了缩小离线应用程序可使用的CPU范围,我们还将采取一系列措施,以保障在线应用程序的SLO。
混部资源调度优化
为了实现实时资源感知,我们需要通过每个节点实时采集每个WorkLoad-Pods的CPU水位情况。然而,这样产生的大量数据需要聚合,以便调度器可以实时感知并做出决策。为了解决延迟和数据失效等问题,我们采用了一种名为 EXPMA(指数平均数指标)的算法来聚合数据,类似于股票指标中的移动平均线。与定期聚合不同,EXPMA可以更及时地探测到资源需求的变化,并且对历史数据的贡献逐渐减少,从而更好地反映当前的需求情况。
EXPMA是一种支持递推计算的波动指标,其自身具有历史连续权重且在当前时刻拥有最高的权重,因此非常实用。为了保持系统的稳定性和正确性,我们可以准备24个槽位,并将每小时的EXPMA值写入对应的槽位。此外,我们采用FUTURE-SUM计算每个节点上Pod的CPU-EXPMA值,并在基于24个FUTURE-SUM的基础上进行SD方差计算。根据计算结果,我们将节点的FUTURE-SD值进行排序,从而得出最适合调度Pod的节点。排序越靠前的节点越适合调度,因为这意味着在调度Pod后,未来上面Pod的CPU相位相互抵消的概率更高,从而波动率得以抑制,资源波动会更平稳,稳定性也更高。
混部落地情况
完成了以上一系列的能力完善后,在2022年初,得物正式启动了实时计算平台任务(Flink)混部项目,第一批基于 kube-adapter 与实时计算平台的对接,实现了自动扩缩容和动态调度。
Flink选择采用我们的动态资源分配,BE类型的应用程序能够充分利用BE范围内的CPU核心资源,从而有效地降低了单核成本。为任务平台提供更为高效和低廉的的算力,进而提升其整体的资源使用率和稳定性。
下图为整个迁移混部的具体步骤:
截至发文,得物已经成功完成了Flink任务的全量混部,这一成就不仅使得任务平台的单核成本下降了50%,而且还为包括基础架构、日志平台等在内的10多个业务线的算力成本优化提供了显著的支持。这次混部的成功为未来更多的大数据离线业务混部奠定了坚实的基础,并将在确保核心业务稳定的情况下进一步将单核成本降低,实现更多的业务增长。
降低容器总资源量 |
整体容器总资源量再下降10% |
✔ |
提升分配率 |
GPU集群cpu被利用了起来 |
✔ |
提升利用率 |
集群碎片资源被得到利用 |
✔ |
稳定性增强 |
重要平台后都有多个集群支持 |
✔ |
3.2.4 PAAS自建
自建KubeAI替代Pai
自建Redis
自建日志平台替代SLS
3.2.5 SRE平台能力建设
SRE平台基础能力决定了应用是否可迁移至多云架构。其主要能力包括应用依赖关系分析、应用调用量分析、应用RT零容忍度分析及内核级分析排障等。该平台运用ebpf技术实现,如下图所示:
3.2.6 CDN的多厂商容灾和调度
作为互联网厂商,CDN成本是重要的网络流量成本。为优化得物CDN,主要有两个方向:1)引入多云容灾和调度能力;2)引入PCDN技术对视频进行加速。PCDN是一种产品,它通过充分利用网络上空余资源并确保稳定性,实现了网络的加速。得物PCDN的实现架构如下:
最终成果:
CDN多云能力 |
CDN SLA从99.9%提升到99.97%+ |
✔ |
CDN多云调度 |
CDN综合成本降低10% |
✔ |
视频PCDN引入 |
CDN综合成本降低30% |
✔ |
3.3 FinOps - Operate(Continuous Improvement & Operations)
成本运营岗:负责日常云成本的运营管理,监控资源使用情况,发现并解决成本问题,推动各部门提高成本意识和优化资源使用。同时负责制定预算、分析成本数据,并确保云成本的合规性和合理性。 业务技术研发:各业务域都会有一名研发对接人,作为该部门成本负责人,认领成本运营下发的优化、预算等需求,协调部门内部优化落地,对部门成本健康状况负责。 财务部门:从财务视角对云成本进行管理和推动。 SRE:作为云成本技术治理的专家,负责优化资源配置、提升系统性能,降低云计算成本,同时保障业务稳定运行。 采购部门:负责与多家云服务商进行商务谈判,争取更优惠的价格和服务条款,降低整体采购成本,提高企业在云市场的竞争力。
3.3.2 精细化成本运营
单位成本获取
效率指标构建
持续化跟踪优化
算法场景成本运营内容:
如算法的一个交易瀑布流模型申请上线会走如下流程:交易瀑布流核心北极星指标为DPV
优化逻辑:低利用率降配/释放、闲置资源释放、付费方式调整、状态巡检、规格调整等 支持产品:容器应用、常规应用、块存储、负载均衡、共享带宽、文件存储等
评估依据:根据应用的资源利用率、流量相关度,大促/日常/压测期间的QPS、报错率、Rt。根据场景设定合理的目标阈值,满足优化前后应用的报错率、Rt在合理的区间时,再基于此时的状态对应用做扩缩容评估 评估合理化:基于数据支持,再通过严谨的评估方案,最终得到合理的评估推荐,有效的降低大促扩容成本,提升大促容量评估效率 评估闭环:平台针对容量评估提供一键操作。当应用缩容时,预测并保证应用缩容后的CPU、内存、错误率、Rt保持在合理范围内,保证够用的应用性能。当然针对负载较高的应用也会做扩容推荐,此时就会通知和推动SRE、业务方来评估处理,提前避免资源不足的风险点。
按照厂商、产品、账单类型及计费规则建立实例级的对账逻辑; 每日完成T-1日的百万条明细订单对账,逐一发现异常实例和异常订单,人工追溯处理异常信息; 每月完成千万条明细订单对账,汇总异常订单及资损,与云厂商完成结算。
3.4 FinOps - 人员能力和文化建设
方案:我们的SRE团队通过内存分析发现,可以引入JDK17的ZGC来降低GC的STW时间,从而抑制甚至消除RT99的毛刺抖动。并且SRE工程师直接深入分析和理解业务源码,帮助业务优化缓存模型架构代码。
成果:通过优化,业务的RT性能翻翻,错误率下降10倍,大幅提升稳定性。从而以不牺牲 稳定性 和 性能 的情况下,大幅降低CPU资源的成本。
Devops和FinOps实际上都是在降本增效的背景下应运而生的岗位。需要不断的打磨,提升。关于FinOps的人才培养,除公司要求和文化宣导外,建议考取FinOps基金会官方认证,完成系统化的学习,成为该领域专家。
3.5 FinOps - KPI考核
云可见性 KPI包括与跨云环境的成本、消耗、性能、配置、安全性和可用性相关的指标 得物考核角色:成本中心产品、研发 云优化 KPI包括与成本节约、预算履约、生产成本事件、平均修复时间、安全漏洞等相关的指标 得物考核角色:技术成本负责人、业务负责人 云治理和自动化 KPI包括与财务管理治理、运营治理、安全性和运营治理相关的指标 得物考核角色:技术成本运营、财务、采购
4
总结
得物在实践FinOps近两年后,优化了成本管理,通过成本洞察、治理和运营形成完整的成本管理链路,结合企业文化、流程和工具,实现高效、协同的云资源和成本管理。这帮助得物降低了云成本,提升了单位资源的产出。
未来得物将继续推进成本治理,完成自建paas全量接入、扩大k8s混部范围、服务器基础机型更新迭代、应用多云部署等,通过技术持续提升服务器利用率、摆脱云商绑定及PaaS产品价格约束。成本运营侧,进一步完善预算、资源申请流程,把单位订单/dau成本等效能指标拆分到各部门,加入考核kpi;联合财务进行大宗资源申请业务roi分析,达到FinOps成本治理成熟阶段。