本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处
雷刚 发自 凹非寺
2020年11月11日晚,又一年天猫双11狂欢接近尾声。
新交易纪录、新流量峰值,一切都是十全十美的样子。
此时,阿里巴巴CTO程立
(鲁肃)
才将一段实录视频公之于众——
11月5日凌晨,阿里技术上下完成双11大考期间最后一次全链路压测后休息和交接间隙……服务器连续遭遇了两次攻击。
第一次,凌晨两点左右,监控大屏显示四个地区数据中心数值迅速下跌,技术保障团队启动紧急响应处理,确定遭遇了断网攻击。
紧接着第二次,2:10,更凶猛直接的攻击来了。华东区域某个数据中心,直接被拉闸断了电……
但最令人震惊的是,这一切居然是阿里巴巴合伙人、双11新零售技术负责人
吴泽明
(花名范禹)干的。
突然袭击,实弹攻击
这不是事先明确的一次突袭。
甚至只有范禹和霜波——阿里双11技术大队长、技术安全生产负责人
陈琴
“小范围”知道。
但是即便如此,陈琴看到这次断网攻击时还是吓了一跳,因为与之前商定的攻击量级并不符合。
当时,明面上压测已经结束,参与的阿里技术工程师们,有的在进行夜宵补给,有的在工位上小憩休息,对于这次意料之外的实弹攻击,没有一点点防备。
庆幸的是,技术保障上下训练有序。迅速锁定故障源头,启动应急方案,紧急展开修复……
仅1分28秒,一切如故。
甚至如果恰好有在那时下单的用户,都难以察觉有过“抖动”。
对于阿里技术上下,虽然事出突然毫无防备,但对于这样的突袭应对,已然肌肉记忆一样……因为在阿里,这种突袭早已普遍而日常,还有专门因此形成的
红蓝军对抗
。
蓝军负责设计突袭弹药,常在不经意间发起突袭。红军则需要在极短时间内修复故障。
对外,这种技术突袭和红蓝对抗一直不为人知。
对内,无数次突袭和演练之后,连故障恢复机制都形成了“1-5-10”的方法论,即在1分钟内发出警报、5分钟内定位故障、10分钟内修复故障。
这也是阿里敢将可用性目标提升到达
99.9999%
的底气所在。
之所以能如此精确,就是因为一次次突袭演练之后得出的结果。
阿里内部,还将这种红蓝军的偷袭与防守,类比为对系统打疫苗。
故意在可控半径内将故障注入系统以测试系统的响应,类似于将少量有害物质注入体内激发免疫反应以防止未来疾病。
这似乎很疯狂,但能让公司提前为包括宕机在内的各种故障做好准备,将其影响降至最低。
甚至还有更疯狂的举动。阿里为这种突袭专门设计了App,简化成一个“按钮”,串联了阿里巴巴经济体的各种技术架构和业务手段。
方便随时随地,按下按钮完成突袭。
它可能发生在任何时候,比如,某一次会议结束后所有人都处于放松状态时。
这次双11前的突袭攻击,就出现在范禹闲庭信步走出“光明顶”时——双11核心作战室内没人察觉异常。
有内部工程师把这种偷袭演练与马斯克SpaceX那次知名的“事故逃逸”演习类比。
核心都是以真实可能发生的事故,来实际检验自身的技术和应急保障机制。
你听过混沌工程吗?
Chaos Engineering,混沌工程。
被称为
“故意破坏的艺术”
,主要通过主动制造故障,测试系统在各种压力下的行为,从而识别并修复故障问题,以此提高生产环境中系统的容错性和可恢复性,最终实现系统弹性的提升。
在硅谷科技公司中,混沌工程已经有过实践。
2010年,Netflix团队开发出了Chaos Monkey——混沌猴子这个工具用于测试系统。
模拟一只讨厌的猴子,在系统中随机位置上蹦下窜,不停捣乱,直到搞挂你的系统。
随后的几年里,Netflix还将混沌猴子在GitHub上开源分享,并指出这种随机故障测试,对测试分布式系统的稳定性有传统方式难以超越的优势。
在这样一整套原理基础上,混沌工程师这样的岗位开始在硅谷出现,角色和功能如这次阿里对外公开的蓝军,把这种随机破坏性攻击,变成一种日常测试手段来提升自身的抗灾能力。
混沌工程是一种专门的理论,本质上是一种反脆弱的思想。
如果再往上追溯,哲学源头可以找到尼采——
杀不死我的必使我更强大
。
而对于阿里来说,混沌工程思想理念,与技术稳定体系需求不谋而合,与阿里异地多活、容灾容错的发展需求契合在一起。
实际上从2010年左右,阿里电商域开始尝试故障注入测试的工作,开始的目标是想解决微服务架构带来的强弱依赖问题。
后来经过多个阶段的改进,最终演进到MonkeyKing线上故障演练平台。