写点什么

跨越认知误区,向智能化混沌工程故障演练迈进

  • 2021-10-15
  • 本文字数:3109 字

    阅读完需:约 10 分钟

跨越认知误区,向智能化混沌工程故障演练迈进

“企业在什么阶段可以开始考虑实践混沌工程?”

 

“任何阶段都可以考虑实践混沌工程,特别是在开发、测试环境,越早引入混沌工程越好。”

智能化,从混沌工程实践起步

以上对话发生在 InfoQ 与中国工商银行技术专家的对话中。企业实践混沌工程,目的是为了提早发现系统和应用层面的问题。在中国工商银行软件开发中心高级研究员王炳辉看来,混沌工程实施的阶段越早越好。他认为,企业在任何阶段都可以考虑实践混沌工程,但是对于生产环境应用混沌工程则需要审慎。

 

“首先业务系统本身应该具备一定的高可用能力,不应出现对一个节点注入故障就会对整个应用产生影响;其次需要具备较为完善的监控体系,即在实施混动工程过程中发生了意外情况,也可快速准确定位问题;最后要有较为完善的应急预案体系,假使混动工程对应用产生了不可逆的影响,也能在最短时间内恢复系统。当企业能满足以上三个前提时,我们认为就可以开始考虑在生产环境实施混动工程了。”不过,企业在生产环境实施混动工程,应该遵循先在非重点敏感场景进行试点,然后再逐步在重点敏感应用实施。

 

如何启动混沌工程?首先需要考虑三个问题:需求是什么?要建设一个什么样的平台?应用在生产上是否已经达到可实施混动工程的前提要求?王炳辉认为,明确需求是第一位的。“如果只是一个较小的企业或者实现一个小验证点,最简单的方式就是引入一个开源的故障测试工具,并在对应的场景去做相应的验证。”

 

中国工商银行为例,底层的故障注入分为多个模块,涉及虚拟机、容器、物理机,不同类型的目标服务器对应的演练内容和方法都不一样,通过到各个项目组去抽调对系统底层架构比较了解的人,一起探讨需求,确定最终要实现的功能和需要吸纳的人,最后再去构建平台。

混沌工程的实践误区

就算满足了混沌工程实践必备的前置要求,实践过程中也很容易走到误区。据王炳辉观察,混沌工程故障演练是一个特别容易重实践而轻理论的事情,一开始很多企业可能会热衷于故障演练平台能力的建设,实施各类的故障演练,发现问题,解决问题,然后一直如此循环。

 

“这样确实在初期可以得到比较好的成效,但是后来会发现随着应用系统的稳定性逐步提升,原来的这种粗放模式能发现的问题就越来越少了,混沌工程的故障注入慢慢变得像测试人员的常规的测试案例。来一个场景,就把一套故障注入的测试案例往上一套,测试通过了就认为可用性较好。这样会带来一个问题,开发人员在设计和开发过程中,会下意识的对于常规性的混沌测试场景进行能力加强或者规避。从而使得演练效果看起来很好,但实际并没有达到预期的情况。”

 

在他看来,混沌工程是理论性很强的一门学问,需要对不同的平台和应用进行全面系统的混沌测试设计,不同的系统的薄弱环节很有可能是不一样的,因此对应的混沌测试内容也应有所差异,特别是跨平台,跨系统的业务线,这类业务场景的链路较长、甚至存在异构系统之间的调用,要通过混沌工程发现整个业务链路的潜在弱点,要求测试人员具备较高的混动工程场景案例设计能力。

混沌工程金融行业的特殊性

混动工程作为应用高可用水平非常重要的衡量手段,目前业界还没有统一的标准体系。因此中国工商银行在内部提出了一套工行应用高可用评价体系,根据应用的敏感程度设定不同的等级。


对于评价等级较高的应用,部分节点甚至园区级故障都不应影响正常业务交易。对于故障恢复时间,重点敏感应用相对普通应用的要求也会更加高一些。“因此工行这边的经验就是,可以先制定一套符合企业需求的混沌测试评级体系,然后根据不同的应用设定不同的评价阈值。”

 

具体到金融行业,王炳辉强调了金融行业和其他行业的区别:

1. 金融行业对应系统可靠性的要求会比传统非涉账类系统更高。

2. 金融系统的整体技术架构,可能会比新兴的互联网软件行业会更加的复杂,比如几个大行之前核心交易都是运行在大机系统上,现在逐步在做云计算和分布式转型,这些都是互联网企业不太会遇到的。

3. 金融行业相对互联网企业有着更加严格的监管要求。特别是涉及到客户信息,账目信息的系统,受到严格的监管。


因此,金融行业在实施混动工程过程中往往会更加的谨慎,不会轻易在生产环境去做混动测试,要确保所有混沌测试除了符合企业内部的制度要求之外,也要符合行业监管的政策法规。

智能化混沌工程故障演练是未来重要发展方向

 “虽然混沌工程从最初诞生到现在已经有十几年了,但是无论是国内还是国际,我们认为目前混沌工程整体都还处于发展初期。”王炳辉表示。绝大多数混沌工程工具或者产品还处于依靠工人进行故障注入的阶段,一些企业可能可以做到自动化进行故障注入和撤销。但是离智能化差距还非常远。比如通过智能感知技术架构或者业务架构,然后生成相应的故障演练任务并进行实施,同时还可以在实施过程中自动化监控相关的技术和业务指标,动态调整故障注入模式和撤销故障注入。

 

“目前国内无论哪家厂商,离这种完全摆脱对人工依赖的故障演练都还有很大差距,但是随着这几年国内各家企业对混沌工程的认知逐渐深入,混沌工程发展也非常的迅猛,我相信在未来几年,智能化混沌工程故障演练是混沌工程发展的一个重要的方向。”

 

什么是智能化混沌工程故障演练?可以根据应用的业务架构和技术架构,然后生成相应的故障演练任务并进行实施,同时还可以在实施过程中自动化监控相关的技术和业务指标,动态调整故障注入模式和撤销故障注入。

 

“目前工行的混沌工程故障演练平台用户是各个应用的测试人员,平台无法感知到目标服务器上运行的业务以及故障测试人员本次测试的目的。平台只知道测试人员进行了哪些混沌测试,但通过混沌测试去反推目标服务器运行的业务或者测试的目的往往是不准确的。因此混沌工程平台、业务应用、基础设施三者之间没办法良好互通,阻碍了混沌工程实现自动化,智能化。我们未来可能会重点关注这方面的解决方案。”王炳辉解释。

混沌工程不只有技术价值

混沌工程自诞生起,一直是行业热门话题,关于混沌工程的认知依然具有讨论热度。不同行业、不同企业、不同职位,对混沌工程的理解一直不尽相同。业务人员对混沌工程的理解,可能是上线之前验证业务的正确性和幂等性的一种手段;技术人员对混沌工程的理解,可能是验证系统架构容错能力,提高故障应急效率的一种手段;产品人员对混动工程的理解,可能是可作为提升用户体验的一种方式。

 

在中国工商银行软件开发中心高级研究员王炳辉看来,中国工商银行建设混沌工程故障演练平台,对分布式系统各个应用实施故障演练,根本目的还是为了提升工行系统的整体可靠性。“混动工程作为提升平台系统可靠性的一种比较常见的手段,是经过国内外众多厂商实践论证的。此外,混动工程也给我们传达了一种主动去制造发现并解决故障的思维,这种思维也是我们从事 IT 行业人员,特别是运维人员所必须具备的一种品质。”王炳辉强调,混沌工程带来的思维方式的改变,对中国工商而言意义较大。

 

采访嘉宾简介:

王炳辉,中国工商银行软件开发中心高级研究员,主导了中国工商银行 API 开放平台和分布式运维支撑体系的建设,主要负责 API 开放平台、分布式监控、混沌工程、流量录放、高可用保障等领域的研究及落地工作。


扫描下方二维码,进入有奖问答

参与国内首个混沌工程调研报告

为了解我国混沌工程发展全貌,中国信通院联合混沌工程实验室启动《中国混沌工程调查报告》问卷征集活动,深入探索我国系统稳定性现状及混沌工程使用情况、行业采纳度、技术成熟度及未来发展趋势,以期推动混沌工我国的概念普及,提升国内系统稳定性,促进软件质量发展。


本次调查问卷由中国信通院联合混沌工程实验室、infoQ、VCEC、中国云原生社区共同发起,参与问卷的用户有机会获得电脑包、文化衫等精美礼品,扫描上方二维码进入问卷。


混沌工程实验室成员包括:


2021-10-15 20:013642

评论

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

瞬息万变的技术圈与焦虑的技术人,进阶Android需要掌握的那几个关键技术!

android 程序员 移动开发

渣渣二本的辛酸面试之路:从深圳外包到杭州蚂蚁金服,4年小Android的爬坑历程

android 程序员 移动开发

玩转AppBarLayout,更酷炫的顶部栏(1)

android 程序员 移动开发

盘点2020年Android面试必备知识点

android 程序员 移动开发

玩转AppBarLayout,更酷炫的顶部栏

android 程序员 移动开发

用MVP模式构建Android代码

android 程序员 移动开发

疫情结束后,会影响程序员年后找工作吗?

android 程序员 移动开发

深度思考:已经开发8年的你,为何跳槽被多家大厂拒绝?为什么会迷茫Android开发还有什么能学习的

android 程序员 移动开发

深度探索 Gradle 自动化构建技术(二、Groovy 筑基篇)

android 程序员 移动开发

深度探索 Gradle 自动化构建技术(四、自定义 Gradle 插件)

android 程序员 移动开发

灵魂拷问:Android开发初期之后怎么提升?怎么才能叫精通?方向在哪

android 程序员 移动开发

疫情下,中年IT的焦虑

android 程序员 移动开发

疫情过后,想找工作的你还不看这份资料就晚了!!史上最强总结

android 程序员 移动开发

【设计模式】第十三篇 - 享元模式 - 连连看的图片共享

Brave

设计模式 享元模式 11月日更

漫谈MVVM(1)ViewModel_DataBinding核心原理(1)

android 程序员 移动开发

漫谈MVVM(1)ViewModel_DataBinding核心原理(2)

android 程序员 移动开发

牛掰!阿里P7大佬爆肝半个月,把安卓源码解析编成了508页的PDF

android 程序员 移动开发

深入解析Flutter架构

android 程序员 移动开发

源码解析,Glide加载GIF图的原理竟然这么简单

android 程序员 移动开发

EMQ 获评“最具潜力边缘计算企业”,推动边缘计算生态发展

EMQ映云科技

物联网 IoT mqtt

漫谈MVVM(1)ViewModel_DataBinding核心原理

android 程序员 移动开发

炸裂!一次Android实习经历告诉你:老爸不是张一鸣,该用什么技巧进字节

android 程序员 移动开发

疫情下中年IT的焦虑

android 程序员 移动开发

深入理解HTTPS协议

android 程序员 移动开发

混合开发框架最全对比,为什么我更推荐Flutter?

android 程序员 移动开发

滴滴国际化项目 Android 端演进

android 程序员 移动开发

深入理解JobScheduler与JobService的使用

android 程序员 移动开发

温故而知新:重新认识Activity的生命周期

android 程序员 移动开发

直播App中Android酷炫礼物动画实现方案(下篇):SVGA由来与Lottie的对比

android 程序员 移动开发

炒冷饭之Https 建立链接

android 程序员 移动开发

疫情被裁3个月,看我如何拿下腾讯offer(附面经+面试心得

android 程序员 移动开发

跨越认知误区,向智能化混沌工程故障演练迈进_开源_张俊宝_InfoQ精选文章