跨云用量庞大的沃尔玛,如何管理云计算运维成本?他们发展出了一套将FinOps集成到组织和文化的关键心法,甚至设立了专门的跨部门FinOps支持团队,来协助各部门实践FinOps。

“沃尔玛的一切都在云上执行,投资越高,我们越需要提醒自己,得控制成本。”沃尔玛全渠道成本运维团队资深工程总监Tim O'Brien指出,因为“要比竞争对手更懂得控制成本。”这是沃尔玛创办人十大准则的第九条。每一个沃尔玛的员工都被要求要专注于省钱,才能对顾客有帮助。

所以,Tim O'Brien强调:“我们一直专注于云计算效率的提升。”也才会在上云第一天,就开始考虑如何节省。但是“效率不只是成本问题,还涉及了稳定性和准备。”

提高工程师FinOps意识是第一步,先聚焦每天的云计算支出

沃尔玛成功推动FinOps的关键是让工程师意识到FinOps,如何做到?有三个做法,先聚焦在每一天的花费,其次再让每日成本的变化产生关联,最后是将成本的影响连接到顾客。

沃尔玛打造了一项项目成本工具,可以画出每个工程团队每天花了多少钱,以及用在哪里。这个工具可以从项目、团队、部门、子公司等不同层级的分类,来查看每个层级的每天云计算成本明细。Tim O'Brien解释,让团队每天专注这些资讯,可以训练他们真正掌握自己花钱的方式,“提高每一天的注意力,是开始控制云计算支出的第一步。”

沃尔玛会不断问工程师,为什么你的花费增加了,是因为数据库还是Log记录暴增?云计算资源的使用有没有过量还是适量?沃尔玛想要训练工程师,有能力自己回答这些问题。

训练团队创建FinOps纪律

“FinOps不是为了解决成本问题,而是创建团队纪律,能够留意当下。”Tim O'Brien补充:“这么做不只可以管理支出,还带来可靠性这项好处。”他解释,训练团队经常关注每日成本指标,可以训练人们推出软件时,更常思考架构,这样的成本纪律可以带来更高的可靠性。一旦发生事故,他们常常是第一个回应的人,也知道如何处理。

将每日云计算支出年度化,来凸显成本变化的影响

当团队习惯留意每天的成本后,沃尔玛的下一步是将让这些成本变化更有关联性,做法是聚焦在每日成本变化率的增减趋势,并且将这些“云计算支出年度化”。这是为了让这些云计算费用的变化,与工程师自己产生关联,让团队更珍惜投入这么多成本所带来的价值。

举例来说,若有工程师为了推出一项新功能,需要启动新的VM,一天要多付500美元上云费用,沃尔玛会将这一日的费用变化乘以365天,转换成对未来一年的影响,就可以让工程师认知到,新功能一年得多花18.2万美元,不是一笔小数目。

更进一步,沃尔玛还从顾客角度来归因这一笔云计算支出的影响,要求工程师思考“要卖掉多少商品,营收才得以打平这项添加功能的成本?这么做值不值得?投入的云计算成本与顾客有关系吗?添加的功能对顾客有帮助吗?”

Tim O'Brien补充:“将所有的节省或浪费,都连接到顾客和相关的体验,才有意义。”

训练工程师注意每日支出只是基本原则,Tim O'Brien还要求整个团队得注意到各种层面的每日支出,依据职位不同,各自负责关注不同重点。资深经理以上的资深主管,甚至是首席技术官,都得意识到每日支出的变化率,如何能够用来鼓励当责(Accountability),让团队对投入相关花费的结果负起责任。

而工程师与团队的中低端经理,则要从每日支出更意识到架构对成本的影响,例如经常评估迁移到新架构的成本是多少?或是检查所准备的存储空间有没有使用?上传了数PB的数据该用冷存储、标准存储还是归文件存储?有没有造成浪费或是提供了过高规格的存储空间?“存储是最容易忘记拿来用的技术。”Tim O'Brien说。

Tim O'Brien指出:“关注每天花费,就像打篮球,每天练习就会进步,每天练习还可以让你保持敏锐,FinOps也是一样。”不只如此,这么做还会带来额外的好处,他补充,关注每日成本,也是一种关注和观察技术架构的方法,一旦观察到意外的支出,对事件的应变能力和回应都会更及时。

为了减少云计算成本,战略上,沃尔玛制定跨年的省钱战略,也会落实到每年和每季预算上,但更重要的是制定每日支出的目标。在战术上,则聚焦关注每天的云计算消费情况、监控利用率。

沃尔玛高层每周必看的云计算费用表

不只设置每日目标,还会订出随着时间进展的费用下降路径。每周Tim O'Brien率领的全渠道成本运维团队,都会寄一张云计算费用表给沃尔玛每位高层。在这张表上,会列出每个部门每周的平均每日支出,例如某部门5/1~5/7平均每天上云费用是34.2万美元,每日目标是三个月后,也就是要在10月1日时,降低到每日上云费用是25万美元,也就是一天要减少9.2万美元。

9.2万美元这个节省额度,不是一天或一个月完成,而是分3个月,每个月降低四分一,因此,在这张表也会同时列出,每个月要达到的每日支出金额,例如7/1每日支出要减为31.9万美元(减少25%),而8/1则要降低到每天花29.6万美元(减少50%),9/1是27.3万美元(减少75%),以及10/1的25万美元,并且列出每个月要减少的金额为2.3万美元、4.6万美元、6.9万美元,让高层可以知道,未来每个月预计节省费用的下降趋势该是如何。只要这个团队某个月的每日支出超出了原定目标,马上就会知道,偏移了多少,应该在下个月修正多少,最终才能达标。

“一个团队的预算是按年来规划,但是焦点必须是每天关注。”这就是沃尔玛落实FinOps的秘诀,Tim O'Brien说:“虽然不是所有的云计算支出都下降,有些领域还是持续增加,但是我们通过这些方式,努力减少上云的费用。”

发展协作式FinOps,避免将FinOps变成省钱比赛

Tim O'Brien也提醒,不能把FinOps当成省钱的比赛,他认为:“FinOps需要协作,得避免造成竞争心态,不能变成一种争“省钱功劳”的情况。”为了发展成协作式的FinOps实践,沃尔玛会特别先防范3种FinOps坏模式,避免团队出现3种不好的行为。

避免团队出现三种FinOps坏模式

第一种不良行为是“标榜自己才是专家”,FinOps团队要避免认为自己才是云计算运维管理专家,专门指挥其他团队该怎么做,或是列出一张长长的省钱改善清单,要求其他团队照单执行。一旦其他团队不听指挥,FinOps团队又没办法负责,就无法落实FinOps。“要让团队自己创建标准和省钱目标,自己当责。”Tim O'Brien表示。

第二种要避免的行为是“指责他人”,FinOps团队不能在老板面前,责怪哪个团队或哪一个人没做好,这会破坏彼此的关系,FinOps协作就会失败。“鼓励才有助于热情和理解,尤其FinOps要扩大规模,特别不容易,需要采取鼓励的态度,而非责难。”Tim O'Brien会尽量将成果归功到更多人,让其他人因注重FinOps而获得晋升。

最后一种不良行为是,FinOps团队得避免“自己把持FinOps数据”。像Tim O'Brien的团队集成四十多种不同的数据源,才汇集整理出各种云计算用量、成本和运维的数据,但是,FinOps团队不能自己想要独占这些成本和利用率的数据,而是得意识到,用到云计算的每一个团队,都需要掌握和分析这些数据。“数据没有共享,就没有信任,而且不只是提供数据,还要分享分析。可以创建一个跨部门的超级用户社交媒体,一起讨论。”他说。

每一周,沃尔玛每一位高层会收到这样一张云计算费用表(图中数据为模拟的假数据),列出每个部门每周的平均每日支出,以及未来3个月后要减少的目标金额,还会列出每个月预计节省费用的下降趋势。只要团队某个月的每日支出超过预定目标,马上就会知道偏移多少,下个月应该修正多少,最终才能达标。(图片来源/Walmart)