164次练习「失败」

164次练习「失败」

首页休闲益智Worldbox更新时间:2024-11-14

应对双11的技术体系,与12年双11滚雪球般增长的数字一同迅速生长起来。随着承载的消费者、商家不断增加,它变得越来越庞大、复杂,每年双11,最大的考验是,如何在保持创新性的同时平衡稳定性? 建立面向失败设计和拥抱失败的文化。这是可能的答案。

文|李弘

失败是必然的,随着时间的推移,一切终将失败。这是程序员中亭很喜欢的一句话。

在长达1年多的时间里,这名阿里云工程师在全力以赴推进阿里巴巴一个面向失败的特殊项目。

2020年10月24日快凌晨2点,中亭和上百名工程师聚集在杭州一个报告厅中。这里是常被外界提及的西溪园区1号楼7层,每年备战双11的光明顶。大家围坐在一张又一张办公桌前,电脑屏幕亮起,好几台电脑显示电量即将耗尽。

程序员正紧张备战双11

模拟双11流量洪峰时刻的全链路压测即将进入尾声。周围窗帘全部拉满,前方,一张超过10米长的大屏闪烁着深蓝色的光焰,交易额的曲线没多少波澜,像一艘在大海里平稳行驶的船。

阿里零售技术事业群总裁范禹悄悄从指挥室走出,他掏出手机,按下了一个按钮。

有人叫了一声怎么回事?几乎所有人抬头望向大屏幕。

原本平稳的交易曲线像撞上了悬崖,瀑布一般飞泻而下。指挥沙盘上,阿里位于张北的几个机房飘红,流量成功率降到了60%——这意味着一万笔订单中,有4000笔会交易失败。

除了中亭和极少数几个人,没人知道这是一场内部突袭。

范禹按下的突袭APP,由中亭和同事们研发。这个按钮,开启了阿里技术团队在真实世界的惊涛骇浪中一键压测的序幕。

刚发起完突袭的范禹和霜波

一只捣乱的猴子

从事技术风险工作的中亭,一直在思考一个问题,风暴来临时,我们应该怎么应对?

看似平静的航行中,只有坐在船头的人,能看到舱外的枪林弹雨。

由比特组成的赛博世界有一条规律与物理世界相同:在一个孤立系统里,如果没有外力做功,其熵,也就是混乱度,总是会不断增大。

当熵积累到一定程度,各种各样的失败,也就发生了。这是必然事件,不是概率事件。

阿里巴巴的技术体系,与12年双11滚雪球般增长的数字一同迅速生长起来。随着承载的消费者、商家不断增加,它变得越来越庞大、复杂,每年双11,最大的考验是,如何在保持创新性的同时平衡稳定性?

稳定压倒一切每年在技术部门备战区都随处可见,但这又是一项前所未有的世界级难题。

建立面向失败设计和拥抱失败的文化。中亭的解决思路是主动制造更多混乱,将还未发生的失败在可控半径内提前爆破,从而给系统主动降熵。

背后的机制设计被称为混沌工程,它试图模拟一只捣乱的猴子在系统中上蹦下窜,直到搞挂系统。

从2016年备战双11开始,阿里巴巴开始定期进行模拟故障演练。

今年,随着对稳定性的要求进一步提高,有人提议设计一个按钮,演练从此升级成了突袭,并在阿里经济体各业务线全面推行:只要各个团队技术负责人按下发动突袭的按钮,一场真刀真枪的战斗将在针对阿里自身技术体系的战场上发生——真不仅意味着一线工程师不知道这是真实故障还是突袭,也意味着一旦恢复不到预期,给业务带来的损失也是真金白银。

动手设计突袭APP前,阿里集团技术风险部的产品专家汉英玩了几十款策略游戏。最后,她和同事设计出借鉴游戏架构的APP,有历史积分排名,有冠亚军领奖台,以此鼓励突袭应对结果不断进步的业务线。

技术团队的模拟战场取名为WorldBox,既是上帝沙盘的意思,又谐音我的box。每个人不一定都是CEO,但他都有一个自己小小的技术世界。汉英说。

WorldBox模型

在突袭中,技术团队被分为蓝军和红军,蓝军负责出其不意发起进攻,红军则竭力抵抗。

APP上有一个供蓝军使用的火药库,里头装着威力不同的武器,有的是炸弹,比如将一个机房全都断网,有的是针管,比如在某个小业务上注入一点故障,有的是小刀,偷偷切断某些产品的对外连接。将弹药丢进战场后,红军需要迅速将被困业务救出来。

负责发动袭击的蓝军分为两种:一种是技术风险蓝军,可以理解为职业蓝军;一种是散落在业务部门的业务蓝军,可以理解为兼职蓝军。

相比处于防守方的红军,蓝军似乎占据了有利地形。但在突袭开始推广后,蓝军在内部舆论中并不占优。

业务好端端的,为什么总是要搞我们?刚开始发动突袭后,蓝军经常收到红军尖锐的质疑,劳民伤财是第一大反对理由。甚至有不少红军直接给张勇和CTO程立写邮件吐槽、抗议。

剑拔弩张相当长一段时间后,突袭机制才逐渐被红军接受。

硬汉红军

每次突袭来临,红军方面对的都是一场与时间厮*的硬仗。

7x24小时由中国区和海外区同学轮值的阿里运行指挥中心,会最早收到异常信号。运行指挥中心已将自动化做到极致,但每天仍需一位同学监控、管理海量的数据变化。

阿里运行指挥中心

数字反常波动,会导致系统自动发出叮叮的报警声。运行指挥中心负责人玄烨对这个提示音太熟悉了,如同长期的一个习惯动作。每月2次的值班日中,他平均会听到200多次。一个小时没响起铃声,他会陷入自我怀疑:是不是这个系统有问题?有次坐地铁,列车到站的铃声和他们的报警声很像,他还恍惚了一下。

他要做的是,像条件反射般从无数杂音信号中分辨出真正的故障信号。

红军应对故障的基线是1-5-10 :1分钟发现,5分钟定位,10分钟恢复。第一个环节,1分钟内发出故障警报,几乎已是极限挑战,但玄烨和同事数年来很少失守。

每天遇到真正故障的频次大概是七八次,操作手册烂熟于心,不过面对有时一个月才出现一次的P1或P2级重大故障,玄烨仍然会心跳一下,无论何时都不敢松懈。

收到警报后,业务方红军同样要随时响应。阿里云网络团队的红军云州每周要回一次在昆明的家。有几次在去机场的路上接到故障通知,他立刻找地方紧急停车处理;登上飞机关机前,他一定在钉钉上做好交接;刚一落地,他即刻连上网络,担心一堆消息涌来。

为了避免将家人吵醒,阿里集团技术风险部负责人霜波常年在睡觉时戴手环,电话一来手环就会震动。

由于需要极强的心理素质,红军普遍是硬汉型,男生占绝大多数,不过统筹负责人霜波是女生。喜欢解决问题是他们普遍的特征,不少人家中有模拟飞行器,阿里新零售稳定性负责人道延在公司空闲时会习惯性地玩魔方,看到魔方的六个面各就其位,他感受到一种成就感。

红军里几乎没有人打游戏,打手游的时候,如果突然出问题了,特别影响队友。

在阿里的头两年半,道延做运营商转售业务,但他对技术更感兴趣。每天下班后,他会花一个多小时,看业界前沿的社区和博客。

2016年双11,交易量在零点的第二分钟突然下跌了,大家都没找到是什么原因。事后复盘,道延也被叫了过去,他分析问题出在没给系统做预热,人跑100米、跑1万米都要热身,系统没有热身、数据没有热身,也会有问题的。

后来发现果然是这个原因,从此享受找bug、修bug的感觉。很快,道延被调做稳定性技术。

红军积累的经验,多数从过往的一次次失败中挖掘。经年累月做消防员,道延总结出一条最宝贵的应对之道:火灾发生时,第一步绝不是灭火,而是迅速挖出一条隔离带,防止火势蔓延,然后连接上提前开辟好的逃生道路,让业务以最快速度逃生。

头悬剑

红军一步步锤炼出的防御工具,很多得益于历年双11的教训,甚至是一些败仗。

优化和升级贯穿了长达11年的双11技术史,成为一笔无价且强大的装备。

2009年,阿里第一次打造双11,当时仅在杭州建了数据中心。到2013年双11,杭州机房已经不够用了。赶上那年杭州很热,近40度的高温几乎持续了一个月,整个夏天都有互联网公司可能被限电的传闻。

万一机房挂了怎么办?担忧第一次浮现。

从此,阿里开始尝试同城双活,然后是异地双活,最后是异地多活——在不同城市建立独立的数据中心。

阿里云数据中心

现实中暴露的问题也逼迫阿里加快升级的脚步。2015年,支付宝曾经历过一次事故,谁也没有料到,一场施工竟将光缆挖断了。

这是一段痛心疾首的回忆。100多位技术负责人被拉入一个钉钉群,群名头悬剑,彼时的阿里技术保障部负责人刘振飞下了军令状:立刻开启容灾演练和技术架构优化。

2016年1月23日,第一次断电演练在深圳进行。当初的亲历者、阿里云技术专家追源仍能清晰回忆起那个数字——23秒。

流量跌零,他们迅速将流量切至上海,然后静静等待。23秒后,原本奄奄一息的大屏,忽然有根线扬了起来,就像心电图的复苏,在经历一次死亡后复活。

开启定期演练后,各种故障发生的频次大幅减少,但每一次发生后带来的仍是实实在在的阵痛。

每一个阿里新人,都被要求上阿里内部公布客户投诉的平台进行聆听,产品宕机后客户的投诉电话最为焦虑。有些是方言,不一定能听懂,但从语气里也能分辨出对方的情绪。

2018年双11,淘宝曾无法修改收货地址。道延在聆听小站上听到一个投诉:一个消费者给父母买的家电送到了自己家,无法改地址,他工作又忙,最后白发苍苍的老人只好自己过来,将家电从高楼层搬下,骑自行车运回去。

道延听到后心酸不已,如果当时我知道这事,我宁愿帮他去搬。

因为清楚每一次故障背后意味着什么,争分夺秒是红军不自言的默契。

但无论经历了再多演练,面对现实中一次潜在的重大失败,身体还是会难以避免的紧张。遇到几次大故障断路时,道延特意观察现场同学的状态,有些人手还是抖的,明明想要敲A,却敲成了B。

演练练的是人的经验,但紧张感是练不出来的。

日后,他们发现,突袭练到了。

敌人,朋友

在10月24日这次突袭前,阿里已经进行了163次真实的自我攻击,对象或随机,或精准。

6月份,阿里CTO程立曾对一个业务条线发起突袭,结果并不理想,因为新调整的技术产品还未在真实环境下被演练,故障处理流程也不够流畅。突袭暴露问题后,业务团队多次复盘,去别的红军团队取经,在APP上得分越来越高。

在一次次突袭中,红军练出了越来越快的反射弧。以前遇到问题,都是靠人去恢复,现在大部分靠系统自愈,先是连续、快速地检测——有的检测6次,有的高达十几次,以防误*——一旦确认了,迅速把流量切走。

后来,有次阿里CTO程立再发动突袭,没想到两三分钟就恢复好了。程立问身边同学:这是真实的吗?你们有没有人偷偷泄露?

别说泄露,当突袭发动时,连身为APP研发人的蓝军中亭也不知道是突袭还是真实故障。

对抗背后,蓝军和红军逐渐形成更深层的合作关系。

红蓝军相会

设计突袭故障场景前,中亭领衔的蓝军先要去走访一轮红军,看他们曾遭遇哪些历史性的重大故障,对下游依赖如何、有没有重大技术改造,和红军达成共识后,再针对性地找出他们的漏洞。

突袭结束后,红军和蓝军面对面坐下来,一起复盘。蓝军指出红军的问题,红军再予以反驳。战斗过程看着刺激,但能从战斗中学到什么才是更重要的。汉英打了个比方:最开始公司的业务是玻璃球,落到地上就碎了;经过月复一月的突袭后,变成了纸球,最起码坏不了了;最终是要变成弹力球,摔到地上还能弹回来。

与蓝军共存久了,红军甚至学起了蓝军,内部自发组织成立了红军中的蓝军。

如果将突袭比作大考,云州隶属于要答题的红军。但为了更好地应对大考,他团队中的红军内部还会在每月底定期推出一次小考。这时候,云州就客串出题的蓝军。我不停地去攻击我团队的人,他们都顶住了,才可能扛住集团的突袭。云州说。

高强度的突袭切切实实提升了系统的性能和表现。云州记得,不过是三四年前,仅仅是网络产品团队一年的故障分就高达1000多分,而今年迄今为止,故障分是29分。SLA(服务水平协议)中,阿里的电商业务承诺可用性达99.995%,意味着一年中只有26分钟不可用——这个数字已经极低。

明年,目标是再次极限提升,不可用时间降到分钟级。

指标落到了蓝军身上。中亭一开始压力山大,防守是红军的任务,为什么让蓝军去背这个指标?

后来他想明白了:既然我们要去验收他们,必须跟他们站在一起,去改变。就像太极的黑色永远都是不全面的,有了白色就会让它更好。

生产突袭这场战役,最终的目标,是让每一个小二都可以参与到共建之中来。

隐蔽的角落

在阿里内部突袭APP上,最高级别的五星袭击是让支撑核心业务的阿里云数据中心断网。

阿里云如同积木的最底层,抽掉了,整个玩具都塌了。相当于最基础的水电煤,阿里云网络团队红军云州形容,千锤百炼阿里云的容灾能力极为重要,因为上百万家外部互联网、政务、金融等领域客户把身家性命放在上面。

每一年双11来临时,除了阿里巴巴灯火通明,阿里分布在全球的数据中心和服务器也在飞速运转。单个数据中心同时运行着数十万个进程,连对空调冷量的需求也比往常增大许多。荧光闪烁的数据中心交织成网络,光点在中国华东、华北、华南聚集,也辐射至各大洲。

数据中心指挥中心

外界曾流传的一个玩笑是:双11零点在数据中心边上剁手,网速更快。

十几年前才一两家数据中心时情况或许真是这样,但现在,数据中心已遍布全国,实现了几乎零延时——从北至南,阿里已在22个城市部署了云数据中心,其中包括五大超级数据中心,分布于乌兰察布、张北、南通、河源和杭州。

驻守的运维工程师是无边数字世界的看门人。为了确保这个世界的物理载体绝对安全,他们也开展了日常性的红蓝对抗和突袭。

有时,安排一人偷偷将某根线拔掉或是让空调罢工,两人比赛,看谁能在规定时间内找到根因,解决问题。

这个由人造设备构建的世界原本很脆弱。高温、台风、雷雨等极端天气都可能影响到数据中心。工程师要做的是,穷举所有问题的可能性,定期检查和突袭所有风险点,并为灾害场景提供充足的冗余性。就跟熊冬天来之前会囤脂肪一样,不是说到了冬天再囤,会提前储备好。

工程师们有自己的一套望闻问切:闻能闻出电线有没有烧焦、柴油有没有泄漏;听就拿着一根螺丝刀,一头对着水泵,一头对着耳朵,听水泵的轴承有没有问题。

驻守杭州数据中心的工程师中,有一半都是处女座。

在双11的高峰期,工程师们将平时巡检的两个小时提升至四个小时。今年,有一款新升级后的机器人陪伴他们,繁忙时可以代替他们巡检,也能自动更换坏掉的硬盘。

数据中心地广人稀,但迎接这一年中最盛大节日的仪式感不会减少。

双11当天,一切万事俱备后,除了穿上红色的战袍,高峰过后买买买,一个传统是一起吃汤圆做宵夜。此外,各个数据中心还有地域特色:河源会吃苹果和芦柑,感恩平平安安,张北则吃烤全羊。

特殊的奖励

内部的一次次演练和突袭,最终服务的是数以亿计的外部消费者和客户。

对阿里技术运行指挥中心的玄烨来说,社会的许多大小变化经过层层链条,最终投射到运行指挥中心的大屏上。春晚时淘宝交易量突然掉下来了,说明节目很精彩,吸引了全国观众的注意力。

去年有一次,阿里在东南亚的购物平台Lazada交易量突然下跌50%。他们赶紧发出故障警报,经过几分钟排查,原来是东南亚发生了地震。

此前,有些养猪户用上了物联网,新生小猪的猪圈安装上温度传感器,温度采集功能异常会向运行指挥中心报警,平台会做出自动化决策。时间同样是最紧要的,长时间不做温度控制,小猪们也许会被冻伤。

加入阿里前,玄烨很难想象,一家企业做的工作、开发的产品,竟渗透进国计民生的毛细血管里。

今年2月,受疫情影响,学生们只能使用钉钉等软件线上上课,家里没网的中学生甚至爬上邻居家的屋顶借网。扩容需求量极大,所有预计第二天都被打破,就像洪水来袭,不停加固堤坝,可每往上盖一层,洪水又变大了。

光是大扩容就发生了三次,整个过程持续了两周。仅广东河源数据中心,就为钉钉连续扩容10万台云服务器。

期间,钉钉创下一个纪录:利用阿里云弹性计算技术,在短短2小时内新增部署了超过1万台云服务器。

小学生开课那天,阿里云技术团队将近六七十人在电脑前盯着,一上课,钉钉的流量一下上去了,但流量的洪水没有冲垮他们日夜建造的堤坝。

过去数年埋头打磨产品的付出,在这一刻得到肯定。

10月24日凌晨,双11前最后一次面向失败的突袭,是对阿里云技术团队的另一次验收。

仅仅过了一分多钟,经过运行指挥中心、业务红军等近十个节点处理后,针对阿里云数据库注入的P1级故障被修复。

如此快的速度,并非靠人,而是靠系统自愈。过去多次注入的破坏性攻击,就像疫苗,不断增强了系统的免疫能力。

这个晚上,还有另一层特殊意义:10月24日是程序员节。

在这天到来之前,范禹在光明顶讲了一个故事:社会上有35岁程序员竞争力下降的焦虑,有同学问张勇,我过了35岁,还能不能专心写代码?

张勇回答,对于35岁以后立志写代码的同学,我120%鼓励、支持、欣赏、敬佩,为你们创造条件。阿里传奇工程师多隆从未做过管理,靠着在一线写代码,他成为了合伙人。

范禹与同事一起复盘

事实上,在幕后为阿里巴巴抵御失败的红军们,平均年龄也超过35岁。他们是阿里巴巴最难得的尖兵,成员几乎只从内部各业务线的骨干中选拔。

我想趁着这样的一个机会,倡导更多的同学能够关注我们的代码,能够关注我们一线的工程师。范禹站在交易大盘前说。

10月24日零点过去一个小时,1024个鸡腿摆在了光明顶门口。许多程序员对着拍照留念框,比起了V,这是对未来的期许,寄予即将到来的双11:万事俱备,胜利终将抵达。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved