阿里巴巴|被你质疑价值的混沌工程,阿里巴巴已落地实践了9年( 二 )


他谈到 , 在这个阶段 , 已经把混沌工程和阿里巴巴集团的上云 , 包括人员组织的应急 , 已经完全串联起来 , 在内部的阶段沉淀到今天 , 其实已经是一个比较好的阶段 。 据悉 , 在阿里巴巴内部 , 将“高可用架构”和“韧性架构组织”升级成为“安全生产” , 目前混沌工程已经成为安全生产的一个基础能力 , 现在内部的各个团队借助混沌工程去自发性地做垂直演练 。 基本上覆盖了阿里巴巴内部的几千个应用 , 所有的核心业务都有覆盖 , 包括生态公司如考拉和高德 。
“过去大家对混沌工程的理解会比较浅 , 主要可能就直接把它等同于故障注入了 , 出现混沌工程原则后 , 有了一个相对严谨的逻辑定义 , 如果用一句话概括的话 , 混沌工程分两层:一层是混沌工程平台 , 一层是混沌工程实践 , 两层配套才能帮助企业完整进行混沌工程落地 。 ”中亭谈道 。 “整体来看 , 对混沌工程的理解应该是分层的 , 整条脉络串联起来的话 , 你会发现其实混沌工程在企业的整个技术周期或者研发周期很多地方有所影响 。 ”
相较于测试关注的是固定的输入和输出是什么 , 混沌工程更加强调实验和探索 。 “一个非常明显的区别是 , 我在生产区执行各种实验 , 然后我是不希望去打破我在线上的一个稳态 。 ”中亭谈道 。 InfoQ 在系列访谈中也发现 , 直接在生产环境做混沌工程测试 , 需要持谨慎态度 , 这是绝大部分业内专家的共识 。
“我”可以引入混沌工程吗? 阿里巴巴的混沌工程实践经验是否可以套用到其他企业呢?从行业角度看 , 混沌工程技术没有明显的行业限制 。 在对混沌工程的拥抱程度上 , 中亭认为 , 从引入目的和策略上主要是两类企业:一类是与阿里巴巴类似的互联网企业 , 关注线上故障的应急;另一类是有自己的云或者阶段性上云的企业 , 面向 C 端或政策法规有要求的企业(如:证券、银行) 。
由于混沌工程的属性和行业特殊性 , 在金融行业的尝试较早 。 一方面 , 金融行业是对高可用严谨性有着高要求的行业 , 另一方面 , 金融行业正在面临转型 。 “所以目前混沌工程、分布式数据库或者其他方面的架构升级 , 背后都需要这样一个抓手来配合 , 所以混沌工程是比较合适 。 ”中亭告诉 InfoQ:“对互联网业务而言 , 线上可以分阶段来说 , 从爆炸半径来讲 , 阶段性的建设 , 配合环境技术单元化 。 ”
不敢引入混沌工程 , 大多数企业的顾虑在于 , 不同部门对混沌工程的认知不清晰 , 担忧落地的结果 。 中亭建议想要引入混沌工程的企业 , 可以先围绕企业特点做针对性实验 , 内部要有明确的组织 , 知道如何配合战略落地某项的时间 , 不再走“老路” , 对混沌工程持有发现故障、发现 bug 的态度 , 而是从系统管理角度想要度量全局稳定性能力 。
从技术基础、组织架构、流程制度和技术、人才储备上来说 , 混沌工程对企业引入没有太多前置要求 。 中亭谈道:“对企业的技术架构没有特别的要求 。 混沌工程的前提要求是需要对企业稳态的观察指标有一个准确的描述 , 所以需要企业在可观测性上有一定的积累 , 有一些基础监控就可以了 。 ”混沌工程主要解决两个层面的问题:单机的系统设计和周边环境的问题 , 比如磁盘、单机网络等;集群之间的问题 , 所以只要企业本身支持一定的分布式化 , 就可以落地 。
据他介绍 , 在阿里巴巴内部有一个制度:第一 , 被演练过的所有发生的故障 , 都要具备线上可演练的机制 , 真正验证是否可以恢复;第二 , 所有微服务的架构或分布式系统的架构 , 一级或核心级应用与非核心级别的应用的关系不能是强依赖 , 需要有自己的预案;第三 , 从组织的角度有一定的验收 , 比如说监控发现率、问题处理率等 , 需要在一个量化的数字之间 。 中亭谈到 , 只这三条制度 , 企业从引入到落地就需要进行很长一段时间了 。