文章来源:MacTalk
题图:自己拍的
一个公司能够做到顶级,一定有过人之处,像阿里这样的大公司,一直是大而不僵,充满活力。比如支付宝,和微信支付杀的难解难分,从线上打到线下,总有奇招叠出。另外,他们的技术领域也有创新举动,今天讲的故事就是支付宝的一位朋友告诉我的,非常有意思,有启发。
说起技术团队,大家想到的总是建设、创新、开源,很少有技术团队专门「搞破坏」的。但是在支付宝确实存在这么一支队伍 —— 技术蓝军,这就有点军事演习的意思了。蓝军的任务就是不断地攻击和进攻,而防守方则是技术红军。在支付宝,蓝军从属于蚂蚁金服技术风险部(SRE),而红军则包括 SRE 及各业务部门的技术团队。
SRE 全拼为 Site Reliability Engineer,是软件工程师和系统管理员的结合,是一种要求极高的技术工种。据说,目前全球只有少数几家顶级互联网公司拥有真正意义上的 SRE 团队,蚂蚁金服是其中之一。
为什么会有这样的团队设置呢,我想蚂蚁应该是希望通过这样的演练,更好的保证蚂蚁金服系统的安全和稳健。
从「青铜」到强者红蓝军技术攻防演练与蚂蚁金服技术风险部的发展息息相关,而蚂蚁技术风险的演进轨迹和游戏中的不断打怪升级非常相像。
早期是质量+运维+架构师三角协同,各司其职并自发性的开展一些技术风险相关的工作。2013 年,蚂蚁金服技术团队提出了质量 2.0 战略,以统一的规章、统一的流程和统一的阵型,开始体系化地沉淀故障检测等方面的平台化能力。
大概一年后,也就是 2014 年,专门成立了技术质量部,从全领域视角解决技术风险的问题。
2015年,技术质量部正式升级成为技术风险部,专注研发及架构的技术风险问题,并完成相应解决方案和落地的平台。
2016年,技术风险部再次升级为 SRE 团队。
SRE 团队组建后,就开始全面开展故障自动定位、自适应容灾、防抖、精细化高可用等工作。其中防抖这块,要保证任何的网络或基础设施抖动,用户都无感知;而精细化高可用,又叫单笔高可用,其颗粒度可以精准到用户的每一笔交易,远远优于行业内的机房级高可用。
同时,热衷「搞破坏」的组织 —— 技术蓝军也正式成立了。这个团队不干别的,主要职责是挖掘系统的弱点并发起「真实」的攻击,红蓝军技术攻防演练也自此诞生。
事实上,技术蓝军并不对各业务方负责,只对应用架构及防御系统的稳定性和可靠性负责。在蓝军眼中,故障的发生是必然的,只是时间早晚而已。蓝军只有想尽办法去触发这些故障,这样,在故障真实发生的时候,才有足够的应付能力。
所以,蓝军发掘各类脆弱点,并通过红蓝军技术攻防演练,不断验证防御系统的可靠性。而故障防御系统及不断优化的高可用架构则是由 SRE 团队的红军与各业务深度合作,沉淀、构建出来的。
现在,全栈级别的技术攻防演练每周都在进行,蓝军似乎对「疯起来连自己都打」很上瘾。
第十人理论这让我想起了电影《世界大战》里的第十人理论。
无论多么完美的计划、周密的理论,总需要有人站出来,从另一个层面考虑问题。当所有人的意见或建议都变得无比一致的时候,潜在的危机和隐患恰恰是最大的时候。这时候如果第十人站了出来,提出了出乎意料的方案或建议,可能成为系统的最后一个保护神。
这个说法来自以色列军方。大部分智能决策的来源都是大量的碎片信息,信息量越大,做出的决策越合理,当你拥有的数据大到一个量级的时候,根据这些数据就有可能找到最优决策。但是,就像解决任何一个谜题的早期阶段,不完整的碎片信息会导致决策者做出错误的或截然相反的判断,因为数据样本不够大,这时候就需要有人运用逆向思维从这些谜团中提出异议、找出真相。
1973 年以色列国防部专门成立了一个机构,他们可以运用各种方式方法挑战情报机构做出的普遍假设,用来保证情报的准确性。这个机构就是那个第十人,不管前九个人的结论看起来多么正确,多么万无一失,他们必须提出异议,找到这九个人都错了的特例,并提供给军方进行评测。
他们会收集并分析各类信息,寻找信息环各个节点的漏洞和错误,挑战一切假设和判断。他们的信条不是「He who dares wins(勇敢者才能赢)」,而是「He who thinks, wins(善于思考者赢)」。
原来蚂蚁金服也有类似的机构。
利矛与坚盾不断升级持续不断的攻防演练,可以让蓝军和红军的技术能力得到极大地提升。
2017 年秋天,蓝军团队在成立后的两个月内,自主研发了字节码级别的故障注入系统 Awatch,这个武器的厉害之处在于可以实时地对运行中的业务系统进行任意链路的编织侵入。这对于对于技术蓝军以及整个红蓝攻防体系,具有里程碑式的意义。
蓝军出招了,红军也没闲着。他们做了实时核对平台横空而出。该平台能够做到稳定的分钟级核对异常发现能力,在某些场景下可以做到秒级发现,并且平台提供了业务快速接入的能力;红军还在实时核对平台的基础之上,升级演化出一套智能核对平台,引入 AI 技术自动识别业务问题,目前这套防线已经覆盖蚂蚁80%以上的业务。另外,各个业务域针对自身业务的一些特殊性,也研发了相应的核对系统。
尽管蓝军制造故障的能力有很大的提高,但大部分的故障场景主要是各个业务方提供的,只有极少数是蓝军人工梳理业务或者分析代码产出。此时,蓝军团队认为,日常演练常态化,在故障场景发现方面不能再依赖业务,必须建立自主发现故障场景的能力。
2018 年 3 月,蓝军推出故障场景挖掘平台,基于 Awatch 探针探测应用内数据流,以此进行「弱点挖掘」。这套弱点挖掘体系,能够自动发现故障场景,最高能够在5分钟内产生500+的故障场景,红蓝攻防的日常演练的最为重要一块拼图终于完成!
然而新的问题来了。
蓝军的故障挖掘平台能力毋庸置疑,但有攻击就需要应急,高频攻防实施亦会给红军带来大量的人力消耗。持续应急压力驱动,红军开展「「故障自愈」架构体系升级及能力建设,以效能为目标,结合仿真,红蓝军一起研发了「无损」攻防体系,并且推出与之匹配的度量平台,自动度量攻防结果,数据可视化。
目前,常态红蓝技术对抗保持每周200+个故障场景的节奏在持续运作。
自此,红蓝军进入了常规化互怼的阶段。在线、实时、随地、无差别攻击和防护……有意思的是,似乎蓝军攻击得越欢,红军的同学越高兴……虽然看上去很受虐,但却没毛病,因为蓝军攻击得越狠越深入,被挖掘和发现出来的技术风险就会越确定,防御系统的能力也会因此而得到提升。
风险防控技术全面开放目前,支付宝的「红蓝对抗」演练已经沉淀出一整套成熟的风险防控体系,通过仿真环境模拟天灾人祸,去考验技术架构的健壮性及技术人员的应急能力,从而全面地提升系统稳定,实现系统的高可靠性和高可用性。
所谓的天灾和人祸。天灾指的是,当出现台风、断网、火情等极端异常情况的时候,系统如何快速应对。这有点类似于今年杭州云栖 ATEC 大会上,蚂蚁金服副 CTO 胡喜现场演练的异常断网情况下,「三地五中心」自动切换,保证支付服务不中断。人祸则是指因技术人员操作失误引发故障后,系统如何快速应。
在蚂蚁金融科技官网( https://tech.antfin.com/ )上可以看到,这些技术风险相关的能力已经对外开放,目前共有 3 款产品,包括容灾应急平台、全链路压测和资金安全监控;另外,还有 3 款产品,变更管控、巡检平台和黑屏运维管控即将上线对外开放。
了解了这些故事,我的得到是:
1、在系统建设和业务发展的过程中,我们要有逆向思维,也就是第十人思维,寻找信息环各个节点的漏洞和错误,挑战一切假设和判断。文章中的蓝军就是这样的角色。
2、就像阿里云一样,支付宝的能力建设成熟了就会开放出来,如果你的企业有这样的需求,也可以是去了解或使用这样的能力。
你的获得呢?
了解更多“蚂蚁金融科技”,请点击“阅读原文”