写点什么

支付宝技术期末考:专业技术蓝军首次对外公开

  • 2018-12-22
  • 本文字数:3332 字

    阅读完需:约 11 分钟

支付宝技术期末考:专业技术蓝军首次对外公开

转眼间 2018 年的进度条已经拉到 98%,年底正是大家忙碌的时候,我等上班族忙着做年终总结,学生忙着复习功课准备期末考试,而在支付宝大楼里,本周也在进行着技术人员的期末考试:红蓝军技术攻防演练。


12 月的第三周,是支付宝技术人的“期末考试”。今年从 12 月 7 日开始,在支付宝办公大楼 6 层的一间办公室里,9 名技术人员身穿统一的蓝色 T 恤,在一排蓝色的可乐山之后紧张地工作,他们就是支付宝的专业技术蓝军,他们的工作是对蚂蚁金服的各个业务线系统注入故障进行攻击。而各业务线的技术人员则作为红军,要对蓝军发起的突袭见招拆招,抵御他们的进攻。


支付宝蓝军诞生背景

红蓝军技术攻防演练与蚂蚁金服的技术风险部发展息息相关。不管是数据中心遭雷劈光缆被挖断这样的天灾,还是人工操作失误代码 bug 这样的人祸,真实的故障都是随机和不确定的。支付宝人意识到,如果只能等真实故障发生时才能够检验,防控能力将处于被动的局面,所以他们必须要有未雨绸缪的策略,提高对技术风险的防御能力。


2015 年,支付宝把原来的技术质量部正式升级为技术风险部,专注研发及架构的技术风险问题,并完成相应解决方案和落地平台。2016 年,技术风险部再次升级为 SRE 团队。蚂蚁金服技术风险部负责人俊义介绍说,相较于谷歌提倡的以确保网站可靠性为目的的 SRE 实践来说,蚂蚁金服的 SRE 团队其实更应该叫做 TRE (Tech Risk Engineering),因为蚂蚁金服的 SRE 团队除了要确保网站、应用的可靠性,还花了很大一部分精力来建设技术风险防控的能力。近年来蚂蚁金服自研的分布式数据库 OceanBase,金融级分布式中间件 SOFA,TRaaS 技术风险防控平台等技术,从底层基础设施到平台都在不断加强支付宝体系的抗风险能力。


SRE 团队成立后不久便发现,以往的技术攻防演练几乎都是小打小闹,不成体系,也很零散。同时,技术团队发现了两个极为重要的现象,一是生产故障不是必然的,而通常都是偶然性的;二是生产故障是低频的。这样就带来了一个很大的问题:故障的样本很少。这意味着,没有办法证明,在真实的故障到来的时候以前设计的平台和能力是不是管用。也就是说,SRE 团队建设的防御系统的可靠性,无法充分验证。


2017 年 7 月,SRE 团队成立了专门的、独立职能的技术蓝军,其主要的工作就是发掘防御系统的弱点并发起真实的攻击。技术蓝军并不对各业务方负责,只对这套防御系统的稳定性和可靠性负责。


在技术蓝军看来,故障的发生是必然的,只是时间早晚而已,技术蓝军要想尽办法去触发这些故障,这样,在故障真实发生的时候,才有足够的应付能力。所以,技术蓝军发掘各类脆弱点,并高频地制造任意可能发生的故障,以验证防御系统的可靠性。

红蓝军对抗

蓝军的执行军长阿贵,在支付宝有十余年的工作经验。当我们惊讶于蓝军团队目前总人数不超过 10 人时,阿贵说是的,尤其刚开始时感觉是在“以一己之力挑战整个公司的技术人”。阿贵介绍说,蓝军要做的事情是去找各个业务线系统的脆弱点,并想尽办法去触发这些脆弱点。攻防对抗发生在镜像系统中,该系统可以模拟生产环境中的流量行为,避免对线上环境造成影响。



红军按业务线分为 8 支队伍:红一支付军,红二微贷军,红三财富军,红四保险君,红五芝麻军,红六国际军,红七安全军和红八平台军


技术蓝军日常的工作除了要对各业务线系统发出攻击,还要从历史事故中总结或从代码逻辑中找漏洞,把故障表现模型抽象出来,基于模型去发现系统的脆弱点。但是蓝军一共还不到 10 个人,要找出蚂蚁金服全局系统的脆弱点,阿贵承认压力还是很大的。“在团队招人的时候,除了看他们是否有好奇心,对高可用是否有很深刻的理解,候选人心理承受能力也相当重要。”蓝军团队平时还需要开发故障挖掘平台,设计探针和算法来采集和分析数据。


2017 年秋天,蓝军团队在成立后的两个月内,自主研发了无侵入式故障注入系统 Awatch,可以实时地对运行中的业务系统进行任意链路的编织侵入。2018 年 3 月,蓝军推出故障场景挖掘平台,基于 Awatch 探针探测应用内数据流,以此进行“弱点挖掘”。这套弱点挖掘体系,能够自动发现故障场景,最高能够在 5 分钟内产生 500+的故障场景。


而红军方面自然也是见招拆招。据俊义介绍,红军不像蓝军专门抽出了一支队伍,而是分布在各个业务线。当有人感觉到系统可能受到了攻击,他会主动站出来去处理问题,这时候他就是一名红军。而在平时,各个业务线也会有专门的值班机制来紧盯系统是不是受到了攻击。


蓝军有自己的故障挖掘平台,红军也练就了一身好的防御本领,祭出了全链路压测平台和资金监控平台,能很好的监测故障并进行预防。同时红军也加强了“故障自愈”架构体系升级及能力建设,以效能为目标,结合仿真,红蓝军一起研发了“无损”攻防体系,并且推出与之匹配的度量平台,自动度量攻防结果,将数据可视化。


红蓝军双方在相互较量中共同提高蚂蚁金服的技术风险防控能力。有时候蓝军发动的攻击会被红军的故障自愈体系防范住,这时候阿贵也会觉得“有点失落”。也有的时候会有红军找蓝军理论:这种低概率的问题为什么要费劲去改善?但是在阿贵看来,不管一个问题发生的概率有多低,都应该被注意到,并尽量对系统做改进以消除这些隐患。所以在红军感知到蓝军确实攻击到脆弱点之后,会及时进行修复,如果不能在短时间内修复的,也会和蓝军约定时间提交修复方案。


目前,常态红蓝技术对抗保持每周 200+个故障场景的节奏在持续运作。而在期末考期间,蓝军的攻击密度会大大提升,在一星期内对各业务线猛烈地发动大约 1000 个攻击。在期末考之前,红军也有个传统,就是拜关公,给关二爷孝敬点瓜子、旺仔牛奶甚至是格子衬衫,这也是蚂蚁金服独特的工程师文化之一。



大概从 2012 年开始,在每年备战双十一的时候,支付宝技术人都会拜一拜关公,而关公也从照片到木质再到铜质不断升级,成为支付宝人的一个传统:既是一种仪式感,也代表了支付宝人对技术的敬畏之心。


在期末考试中,红军会按照发现攻击的时间和故障恢复的时间来进行排名。去年,红军的第一名和最后一名分别获得了“金算盘”和“烂算盘”的奖品。阿贵对烂算盘印象深刻:是真的烂,铁杆绣到发黑,算珠也有缺口,“也就只有在淘宝上能买到了”。

考试有排名,目的不是争输赢

当被问到是希望红军赢还是蓝军赢,阿贵回答说,其实红蓝军攻防演练并不是为了要争谁输谁赢。而是双方在对抗的过程中都能不断反思升级,了解到蚂蚁金服全局系统中有哪些容易出问题的脆弱点,在现实生活中发生问题之前把问题免疫掉,再大的问题也能达到 5 分钟故障恢复的目标。因为金融行业关系到我们的日常生活,很多时候甚至会关系到整个社会的稳定。支付宝迄今全球活跃用户已超过 9 亿,安全稳定的技术系统是事关生死的基石。


除了平常的故障演练红蓝军技术攻防,蚂蚁金服还在前沿技术上不断探索,致力于打造更稳定安全的技术体系,如:


  • AI。使用人工智能技术进行校验业务。蚂蚁金服内部有四道安全防线:第一道是研发团队的代码,第二道是质量团队,第三道是 SRE 团队,第四道是人工智能技术。目前蚂蚁金服已经在其资金安全监控系统中使用 AI 技术,利用算法自动识别异常,做到故障自愈,再结合蚂蚁金服的 TRaaS 技术风险平台,可以覆盖蚂蚁金服 80%以上的业务。

  • 区块链。安全是区块链技术的一大特点,而金融行业是对安全性、稳定性要求极高的行业,所以当区块链技术刚被提出的时候,金融被认为是最主要的应用场景之一。蚂蚁金服也在探索区块链技术,比如用于做容灾等,在未来也计划打造安全可靠的区块链平台。


经过不断的打磨和锤炼,支付宝的技术风险防控体系已经具有较好的可靠性和稳定性。从蚂蚁金融科技官网上可以看到,这些技术风险相关的能力已经对外开放,目前共有 3 款产品,包括容灾应急平台、全链路压测和资金安全监控;另外,变更管控、巡检平台和黑屏运维管控即将上线对外开放。

写在最后

任何系统和软件都不可能做到十全十美,只要是人在写代码,就难免会有漏洞,难免有考虑不到的盲区。我们身处技术改善生活的时代,也需要对技术保持敬畏之心,居安思危未雨绸缪才能设计打磨出更加稳定易用的产品。当今年双十一能顺利完成再创新高的 2135 亿交易纪录,当支付宝能扛住 25.6 万笔/秒的交易峰值,这背后离不开这支蓝军队伍的专业“找茬”,也离不开所有支付宝技术人强烈的风险意识。


2018-12-22 09:003352
用户头像
张婵 InfoQ 技术编辑

发布了 87 篇内容, 共 52.8 次阅读, 收获喜欢 218 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

巧用Android网络通信技术,在网络上直接传输对象,android设计模式总结

android 程序员 移动开发

已拿字节、腾讯、墨墨 offer,【面试总结

android 程序员 移动开发

年终总结攻略|3个步骤,让老板给你的工作汇报点赞,2021Android精选面试实战总结整理

android 程序员 移动开发

悬浮窗的一种实现 _ Android悬浮窗Window应用,移动互联网开发技术专业

android 程序员 移动开发

情场失意,事业得意—,腾讯T2大牛亲自教你

android 程序员 移动开发

您有一份AndroidX升级指南未领取(1),2021年不想被公司优化

android 程序员 移动开发

您有一份AndroidX升级指南未领取,androidsdk环境配置

android 程序员 移动开发

想做直播的你,这些热门的音视频如何绝对同步的。你get了嘛

android 程序员 移动开发

已经说过千万遍了!!面试官,一线互联网大厂中高级Android面试真题收录

android 程序员 移动开发

底层图像处理之微信32Kb图片压缩方案-(二),android双击事件响应

android 程序员 移动开发

当面试官问到Binder这些问题,你会怎么答?,android面试及答案

android 程序员 移动开发

征服Android面试官路漫漫(三),Android岗面试

android 程序员 移动开发

微信自研 APM 利器,Matrix 正式开源了,2021Android大厂面试知识分享

android 程序员 移动开发

带你一起探究Android事件分发机制,-让面试提问不在畏惧!

android 程序员 移动开发

应聘腾讯,面试官和我聊了一个小时的人生,flutterrow换行

android 程序员 移动开发

张一鸣:“如果是你偶然发现青霉素能消炎,android组件化开发视频

android 程序员 移动开发

当你面试的时候,被问到关于Fragment的种种,Android开发教程

android 程序员 移动开发

微信小程序之商品属性分类-——-微信小程序实战商城系列

android 程序员 移动开发

总包不足80w的高龄Android程序员,被面试官diss混得太差,网友狂吐槽

android 程序员 移动开发

建造者模式,2021最新网易Android面经

android 程序员 移动开发

想进阶高级架构师,你需要养成这10个习惯!,flutter小程序的onshow

android 程序员 移动开发

底层学习---Android-IPC机制(二)序列化机制,张口就来

android 程序员 移动开发

当你面试的时候,被问到关于Fragment的种种(1),华为移动应用开发平台

android 移动开发

想进BAT一线互联网大厂,该怎么准备技术面试?一位6年老Android的面经总结

android 程序员 移动开发

想掌握Android面试官必问的 Binder 机制?那别想绕开 Binder 驱动源码分析!

android 程序员 移动开发

想搞懂Jetpack架构可以不搞懂生命周期知识吗?,阿里P8架构师

android 程序员 移动开发

干货来袭-通过这份Android-中高级架构师教学资料(全套)在公司大裁员下

android 程序员 移动开发

年后想跳槽涨薪?你想要的面试题全在这里,activity事件分发

android 程序员 移动开发

彻底理解OkHttp - OkHttp 源码解析及OkHttp的设计思想(1)

android 程序员 移动开发

征服面试官系列: Binder 核心机制和进程间通信,你都理解了吗

android 程序员 移动开发

微信小程序开发-Flex布局,flutter二维码识别

android 程序员 移动开发

支付宝技术期末考:专业技术蓝军首次对外公开_文化 & 方法_张婵_InfoQ精选文章