作者简介:郭玉龙,货拉拉运维专家,主要从事云资源交付工作。其从16年以来,深耕云上成本管理,协助企业实现降本增效的目标。
公司在2021年对技术成本盲点提出了意见,并提出“去盲点,找突破,降本增效……”的口号。降本增效成为了货拉拉2022年的首要目标。
2021年7月,CTO提到:“九层之台,起于累土, 稳定性是我们整个技术团队所有成功要素前面的那个1, 没有了稳定技术的支撑,所有其他的努力都会清零。”
同样的,保持稳定性,却是技术中心所有努力的重中之重。
在业界大概有一个认识,效率,稳定性,成本三者,在当前的技术手段下,是处于冲突的位置。那么如何将效率稳定性与成本之间很好的处理起来,成为货拉拉在2022年重要挑战。
云厂商 | 区域 | 服务 | 服务规模 | 业务 |
AWS Azure 阿里云 华为云 腾讯云 私有机房 ……等 | 新加坡 巴西 广州 深圳 ……等 | 服务器 数据库 负载均衡 存储 容器 日志服务 安全组件 ……等 | 万级 | 核心链路 大数据 ……等 |
货拉拉成本治理面临的痛点是十分复杂的:云供应商多,地理位置分布广泛,服务类型多,规模大,业务类型多的特点。每一点都为货拉拉成本优化带来了挑战。
如果所示,该图为货拉拉成本历史曲线,有以下结论:
优化前 | 优化后 | |
业务 | 持续上升 | 持续上升 |
成本 | 抛物线成本上升 | 抛物线成本下降 |
IT 成本= S (服务使用成本) + H(人力成本)
HLLM 在成本上,优化方向,为服务使用以及维护成本上。
服务成本影响因素有:基建成本B,服务选择带来的成本变量X,服务的使用率 U,业务规模 Y,业务增长系数为N
假设服务成本 = B+X +Y(0)*X/U
由于基建服务可以复用,那么增长后的理想成本 = B*n+X*N+Y(N)*X/U*N
由于业务规模扩大带来的服务成本上升是可以预期的,可以看到,服务的使用率U,成为成本优化的重点。而服务选择带来的成本变量X则是成本优化的重中之重。
简单说一下人力成本 H= D(研发成本)+ M(维护成本),假设业务规模不断扩大,无论是研发人员和维护人员都将成倍数增长。
研发成本 D = DE (研发效率)* DR (研发人员数量)
维护成本 M = ME(运维效率) * MR(运维人员数量)
在人员一定的情况下,提高研发效率和运维效率,将成为优化人力成本的重点。
云资源交付组,主要做云资源交付相关的工作。主要属于运维职责的一部分。并具备业务研发中,协助选择更适合的服务,协助研发人员,提高研发效率。
专业的云资源交付团队,在成本优化的技术工作中,起着技术导向作用。
在货拉拉成本优化的推进中,基于Finops的实践,云资源交付组完成和推进了以下优化进程:
在以上服务的选型和使用,或者优化进程中,云资源交付组,同时承担了以上服务的发起者,部署者以及审核者的职能。而业务人员则主要是使用相关服务即可,适用于货拉拉的技术特点,通过专业的运维能力,往往是稍微的改动便能够既能够降低成本,举一些例子:
存储类型的优化,在保证存储性能的同时,可以降低20%左右,可采取的措施有:
使用更新一代的磁盘,替代旧的磁盘,如gp3 替换 gp2,增加弹性的同时,减少成本。
在适当时候,使用HDD磁盘替代SSD磁盘,盲目追求性能,使用SSD磁盘,非常不可取。
在开发能力覆盖的情况下,使用多种存储方式,比如更多的使用对象存储,成本更低,可靠性更高,并更好的支持横向扩展能力,支持更高的并发。
网络链路的设计,常见的有:
云上访问S3,一定要避免NAT/公网访问,尽量争取使用gateway endpoint方式访问,不同方式,对单月成本影响可以达到数万美金,甚至十几万美金。
Azure 的Blob存储访问,走指定的公网路由,满足安全需要同时,避免了大量的endpoint 数据处理成本,对于大数据类型的应用,收益极大。
特别的,跨机房访问S3,同样建议避免公网访问,更建议使用interface endpoint方式访问。安全性高,性能好,同时成本也会更低。
日志系统的优化,货拉拉采取的手段:
货拉拉曾经构建了的日志系统,成本高,运维工作复杂。采用OpenSearch,替换自建的日志集群,将温数据托管在对象存储上,极大的降低了存储成本,另外使用Graviton2 ARM机型替换Intel x86机型,使得整套日志集群成本,只有过去的40%。同时降低运维压力,扩容更加简单。
竞价实例的推进:
货拉拉海外业务几乎都是部署在容器上,为深入使用到了竞价实例提供了先决条件。特别是测试环境,竞价实例覆盖率达到90%以上。同时部分生产非核心的应用,使用到了竞价实例。该项目推进时间大约有3个月,相关app达到数百个。
云原生之业务容器化:
货拉拉国内,使用容器方案替换传统的ECS部署方案。将资源使用率从平均的30%提高到50%,实际成本降低14.28%左右。
预留实例/Savingsplans的推荐:
从项目角度,资源调度角度,维护成本,合同期限等,多方面考虑预留实例的购买方式。货拉拉的预留实例+Savingsplans,覆盖率基本上维持在95%左右,使用率基本维持在接近100%的水平。
预留实例/Savingsplans/包月等商业属性,深入集成到云管平台中,使得计算资源更为密集的分布,而非一味的追求性能问题。对于常用机型,购买基于实例的 Savingsplans 方案,对于非常用机型(如部分业务已经更新为最新一代),尽量给予 计算的 Savingsplans 方案。简化了预留实例/Savingsplans 购买方案,并极大的降低了人力的投入。
灾备方案建设:
基于云的特性提供推进 DR 演练,演练成本控制在月度成本的1.5%左右,周期性备份成本控制在月度成本的1%左右。
等等……………………
云平台开发部协助云资源交付组,开发了一套平台 - 即Lcloud ,主要承接两个能力
降本:管控所有云上/IT资源成本,花费透明;优化资源利用率(U)以降低成本。
增效:提升云上资源交付效率。
特别的:云管工具的颗粒细度几乎决定了成本优化所能够做到的级别,拥有一套符合自己业务特点的云管工具,将会大大简化成本维护的工作。云管工具的开发工作,最好在完整梳理资源交付流程后进行。
货拉拉云管工具 Lcloud 架构如下:
Lcloud 的能力:
不仅可以管理云资源(AWS,阿里云,华为云)成本,也管控其他第三方服务(短信,地图等)的成本
适应货拉拉的组织架构,根据业务划分权限,通过该平台,实现多维度的拆账能力,对成本报表进行统一管理和维护。
提供成本自治能力,平台提醒并指导业务人员自主完成成本优化行为,并培养业务人员的成本意识
提供比较精确的成本预测能力,月度预测误差在5%以内
集成了货拉拉其他工具的数据,更多元素,一览服务器使用率情况
一站式运维管理平台,提高运维效率,降低运维人力成本。
集成预算数据与KPI需求,在几乎不降低资源申请效率的前提下,确保预算充分时资源申请畅行,超接近额度时,使用户能够感知。
……………………
完整的资源生命周期管理,切实追踪每个资源成本和运营情况
服务对接人:每个部门提供成本接口人,推进成本优化进程。
运营:工程师和Ops团队成员,成本作为指标引入,与跟踪和监控其他性能指标的方式相同。
月度成本Review会议:确立KPI,跟进成本管理和成本优化指标。
5.1 成本盲点
缺乏对云服务足够的了解,会带来云成本的大量上升,一家云厂商,其提供的服务,可能从几十种到几百种,如果缺乏对服务足够的了解,或者为做到充分的保护,在使用中,很容易带来爆发性的成本增长。以下是货拉拉曾经遇到的一些问题:
网络配置不适当:访问对象存储,走NAT或者走Private link,由于NAT和Private Link的计费特征,是有可能会带来无法估量的成本增长的,甚至可能会有一定的安全隐患或者稳定性隐患。
云存储类型使用不适当:标准Blob存储与高级Blob存储,价格可能相差到7倍之多。
磁盘类型选择错误:选择较为较早版本的磁盘,在丧失扩展能力的同时,也提高了成本。
托管服务未经过评估便大量使用:上托管服务容易,下托管服务难,成本成倍上升,且难以优化。
…………
以上问题是十分常见的,基本上,每隔一段时间,都会有类似的成本发生,为了避免成本盲点,可以遵循以下几点,来基本避免掉成本问题产生:
当选择云服务时,对于“根据使用量收费”的服务,务必咨询专家意见。
不要预留更高的能力,对于数据,服务的sla及性能保障,应该贴近使用需求情况,不可为了省事,追求高性能带来无法预测的成本上升。对于一些“高级”“详细”“enable”等字眼的开启,务必要查阅其收费规则。更建议使用相关平台,在性能需要相应提升时,及时提供。
完整的成本监控至关重要,避免当规模达到一定程度之后,遇到成本损失无法挽回的问题。
比如稳定的需要,我们可能会做一些事情,这些会带来成本的上升:
稳定性 | 成本 | 过程 | |
阶段一 | 下降 | 上升 | 业务起步阶段 |
阶段二 | 上升 | 上升 | 稳定性成为业务的‘1’ |
阶段三 | 保持不变或者逐渐上升 | 缓慢上升 | 成本成为业务的重要考量 |
阶段四 | 上升 | 先下降后上升 | 成本治理,有计划的稳定性支出 |
还比如,架构演进:单节点 --> 多节点 --> 多泳道 --> 灾备等,每一笔,都是需要更多的成本支出。
弹性是公有云最重要的特性,由于弹性,将呈现多种特点,并因为各种原因,导致成本上升
理想的场景
在技术上,准确预测资源使用率,根据资产情况,享受到最高的折扣
业务成本与计算能力呈现线性增长趋势
业务规模扩大,基建成本呈现一定的增长趋势,但低于业务规模
弹性带来的成本上升始终是有限的
弹性曾经引起的问题
业务弹性,导致不管从技术层面还是商务层面,难以享受“最经典的折扣”
技术能力演进过程中,引入成本盲点
某些业务的发展,导致局部服务成本暴增,并影响到整个成本大盘
因成本限制,导致弹性能力不足,又反向导致业务瓶颈
……………………
我们往往会有一些疑问,一次促销,我们花了多少钱,新增了多少流量,带来了多少的业务价值。较为准确的评估这个业务价值,是很重要的能力。这里影响因素很多,这里包含了当前情景和未来情景。对于未来的评估,会十分复杂,影响因素也非常多。但是对当前的成本情况,却是可预期的。将有助于提供业务的相关决策。
货拉拉的成本管控,脱胎于Finops的事件经验。
FinOps是一种不断发展的云财务管理规程和文化实践,通过帮助工程、财务、技术和业务团队在数据驱动的支出决策上进行协作。
货拉拉成本优化实践,与Finops是天生契合,货拉拉成本管理与Finops成熟度模型对比如下:
爬 | 走 | 跑 | 货拉拉现状 | |
分账能力 | 50% | 80% | 90% | 95%以上 |
折扣覆盖率 | 60% | 70% | 80% | 90%以上 |
预算预测误差 | 20% | 15% | 12% | 5%以内 |
货拉拉当前已经根据其准确的成本,在一些活动中,根据成本情况,影响部分业务行为。货拉拉云资源交付团队,仍然将进一步探索成本与业务指标之间的关系,进而提供更多的业务价值。这里,货拉拉仍然有很长的路要走。