在 InfoQ 混沌工程系列访谈中,企业如今对混沌工程普遍的感知是:企业内部不同部门认知不统一,业内对混沌工程没有相对统一的评价标准。随着云基础设施的广泛应用,混沌工程不断与国内大公司碰撞出火花。2020 年初,中国信通院开始组织专家进行混沌工程技术研究,提出应用混沌工程方法来验证云原生系统的韧性架构。
随后在 2021 年 4 月 2 日,混沌工程项目研讨会议在京召开,发布《混沌工程平台能力要求》标准纲要。三个月后,中国信通院在可信云大会上,牵头成立了国内首个混沌工程实验室;2021 年 11 月,中国信通院联合混沌工程实验室成员单位完成国内首个《中国混沌工程调查报告》(点击下方“阅读原文”下载报告全文)。中国信通院探索混沌工程在国内各领域典型应用场景中的实践落地,联动云计算上下游企业来共同推进混沌工程概念的快速普及。
InfoQ 就混沌工程采访了中国信通院云大所云计算部副主任陈屹力,以下是 Q&A 报道。
陈屹力:各个行业都迎来了数字化转型浪潮,随着企业对于云计算的理解和实践不断深入,基于云计算的分布式架构已经越来越多地成为企业应用构建的首选方案。
随着应用云原生化的推进,业务系统的迭代速度会越来越快,后端系统架构变得复杂,服务之间的依赖增多,调用链路增长。利用“混沌工程”技术来保证生产环境的分布式系统在面对失控条件的时候仍然具备较强的韧性,因此我们认为一个数字化的企业应该采用混沌工程技术来提升自身系统的健壮性。
陈屹力:在我看来,混沌工程与可观测性是相辅相成的。可观测性技术为混沌工程提供了生产系统中发现故障的抓手,同时在准生产系统随机注入故障,通过可观测性探寻系统动作变化,扩宽团队对系统的认识。
反过来,通过实践混沌工程,也可以丰富可观测性的指标,为可观测性提供更精准和更具参考价值的设计方案。随着时间的推移和技术的深入,这两种技术将会相互促进和加强。
陈屹力:现在混沌工程很热门,尤其是哔哩哔哩持续 3.5 小时的服务器故障事件让大家也进一步认识到在分布式系统中开展混沌工程的必要性。但在混沌工程实施过程中,我觉得首先从理解层面,要分清楚,混沌工程不是简单的测试,它更像是一种试探,实验本身没有明确的输入和预期结果,通过对系统和服务的干预,来观察系统的反应。
另外我们在调研过程中也发现,不同行业用户对混沌工程的接受程度跟自身行业属性相关度极高,比如互联网行业用户就比较容易接受在生产环境中直接实施混沌工程,而稳定性要求更高、监管力度更大的金融行业客户在这方面接受度稍低,一般会在类生产环境中实施。因此用户在实践混沌工程过程中要根据自身情况逐步推进混沌工程的实施深度,逐步由测试向类生产、生产环境推进。
陈屹力:我认可。混沌工程与 DevOps 理念对企业的影响类似,它不仅仅是一个平台或者技术,而是一种文化,建立一种面向失败和拥抱失败的技术文化,这不是一个团队的事情,而是整个产品团队都应该认可、执行的事情。
为了推广混沌工程的理念,我们也计划开展混沌工程成熟度模型的编写,从技术、管理、文化等多维度指导企业逐步建立自身的混沌工程能力,推动系统稳定性的提升。
陈屹力:这个问题很大,我来逐个回答。
1)混沌工程一般适用于分布式架构的系统,只要公司采用的 IT 系统是分布式的,就可以采用混沌工程技术来提升系统稳定性,与技术能力是否足够强关系不大。技术能力的强弱只是会影响混沌工程平台功能的完整程度,根据我们编撰的《混沌工程平台能力要求》,我们为建设混沌工程平台分了三个等级,开发者可以根据自身技术能力逐步由基础级到增强级再到先进级建设自身的混沌工程。
2) 高度监管行业当然能实施混沌工程。从我们调研的结果看,高度监管行业一般也是对系统稳定性要求非常高的行业,比如银行、证券,而这两大行业对混沌工程的热情度和接纳度是非常高的,因为混沌工程的成功运用能有效提升系统韧性,更有利于发现系统漏洞,提升监管效果。
3)混沌工程确实具有实验性质,也有可能会导致意料之外的后果。但混沌工程的“爆炸半径”就是为了熔断“预期之外”的后果,把试验的影响范围控制在最小。
4)混沌实验对系统带来的破坏,都可以通过爆炸半径等熔断措施的控制来实现。
5)混沌工程是一种探索性试验,与传统测试有本质上的区别,传统的测试是有固定的输入和预期的输出,但混沌工程是随机注入故障,而系统在故障注入后会产生什么连锁反应我们并不知道。
陈屹力:目前混沌工程还处于起步阶段,国内很多厂商都在尝试,我们也在积极普及混沌工程的理念。互联网厂商比如阿里云,阿里云还开源了 ChaosBlade,同时也有自己的商用混沌工程工具;PingCAP 也开源了 ChaosMesh,腾讯云内部也在实施混沌工程,金融行业比如工商银行和华泰证券都做得不错,通信领域的中国移动也在内部积极实践混沌工程,平台能力十分丰富。
陈屹力:首先在技术层面,我们比较关心混沌工程对云原生相关技术的接纳程度。目前云原生技术确实已经被大多数企业采纳,而且随着容器、微服务、服务网格等技术的进一步普及,混沌工程的实施对象将会进一步扩大。通过我们调研发现,当前混沌工程已经逐步接纳了云原生相关组件,比如 ChaosMesh 除了基础的 CPU、Disk、I/O、network 外,还支持 Docker、Dubbo、JVM 的攻击,对 Kubernetes 部署非常友好。
除此之外,我最近比较关注混沌工程的度量,这也是混沌工程实验室下一步要开展的工作,如何去评估一个混沌工程平台建设的成熟度,以及如何度量混沌工程实施的价值。
陈屹力:我认为混沌工程未来大有可为。随着系统越来越复杂以及用户对系统问题的容忍度越来越低,系统稳定性要求肯定是越来越高的,而混沌工程提供了一个行之有效的解决思路。另外,我也希望更多行业的企业能踊跃尝试混沌工程,参与到混沌工程实验室的共建工作中来,借助信通院的平台来交流技术心得,推动技术发展。
嘉宾介绍:
陈屹力 中国信息通信研究院云大所云计算部副主任,云原生产业联盟秘书长,云计算开源产业联盟可信云工作组组长;主要从事云计算领域产业发展、关键技术研究、标准制定等相关工作,牵头撰写云计算行业 20 余个标准,曾荣获通信学会科技进步奖。
(点击下方“阅读原文”下载报告全文)