混沌初开,方兴未艾。混沌工程的概念由Netflix在2014年提出,近些年阿里,华为,腾讯,百度,工商银行等国内企业都有该领域的实践。
蚂蚁集团于2016年开始建设混沌工程体系,经历近6年的发展,目前以红蓝攻防为主要形式的混沌工程已有相当大的规模,从技术、机制、文化等层面驱动蚂蚁集团风险防控水位不断提升。
本文主要介绍蚂蚁集团的混沌工程体系,包括蚂蚁混沌工程的发展历程、业务特色、关键技术和平台以及未来规划。
一、发展历程
蚂蚁的混沌工程技术依托于红蓝攻防模式进行全面落地,红军(研发&质量&SRE)构建稳定的系统,技术蓝军持续注入风险异常,相互对抗和提升。蚂蚁混沌工程的发展分为三个阶段,我们称为三个代际的混沌工程。
第一代,时间为2016至2018年,重点是故障注入体系建设。
第一代混沌工程主要围绕着故障注入展开,当时蚂蚁的技术故障缺乏完整的体系进行防控,更多是各个业务系统根据自身重要性进行相关投入,风险防控的水位参差不齐,因此技术蓝军以减少故障为主要目标,开始进行故障注入的演练工作,当时主要针对运行中的应用系统,内容包括系统可用性和资金安全两个方面,建设了故障注入相关的技术和平台,组织了几次攻防演练活动,尤其在资金安全核对、变更风险识别方面起到了很好的牵引效果。
第二代,时间为2018年至2020年,重点是混沌工程边界拓展。
混沌工程领域边界的拓展主要体现在两个方面。第一,混沌工程不局限在故障注入,故障背后的本质是对技术风险的认知,我们提出风险挖掘的命题,包括资金风险的挖掘,变更影响面的挖掘等;第二,混沌工程开始面向软件完整生命周期,不再仅仅针对系统运行阶段进行故障注入,在开发,测试,发布,运行,数据处理等软件生命周期的各个阶段,我们都探索并落地了相应的故障注入能力,例如源码注入,测试用例注入,发布变更注入,在离线数据同步和计算注入,等等。同时,大型攻防演练活动已逐渐形成内部品牌,分别是面向高可用领域的527和面向资金安全领域的1218(分别表示5月27日和12月18日,蚂蚁历史上在这两天发生过两次必须铭记的重大故障,不忘教训而取此名),通过技术运营等方式,开始在蚂蚁技术工程师中建立混沌工程的心智,宣导风险防控意识和文化,稳定优先的理念深入蚂蚁每一个技术人员的内心。
第三代,时间为2020年至今,重点是混沌工程角色的转变升级,由“验证”升级为“牵引和驱动”。
技术风险体系建设已经非常完善,连续多年全站故障数下降比例超出目标。在这种背景下,如何保鲜现存的技术风险防控能力,如何驱动建设更丰富的防控手段,成为主要命题。混沌工程在这个阶段的角色发生了重大变化,相比之前,我们大大增加了日常攻防演练的频率和数量(2021年故障注入次数在亿次级别,频率为以天粒度进行持续回归),结合风险挖掘,仿真环境,自动化度量等技术,将攻防演练做到常态化持续运行,不断发现防控问题,揭示防控水位,牵引防控能力保鲜,驱动防控能力建设。在技术层面,统一攻防切面Awatch技术,仿真运行环境,混沌靶场,污点分析等硬核技术逐渐沉淀出来,后文也会针对性介绍。