写点什么

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

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

    阅读完需:约 10 分钟

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

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

 

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

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

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

 

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

 

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

 

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

混沌工程的实践误区

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

 

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

 

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

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

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


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

 

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

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

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

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


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

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

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

 

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

 

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

 

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

混沌工程不只有技术价值

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

 

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

 

采访嘉宾简介:

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


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

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

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


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


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


2021-10-15 20:013702

评论

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

【Debug】VS EXE运行“应用程序无法正常启动(0xc000007b)”

柒号华仔

debug 7月月更

list的使用方式

小肉球

qt 7月月更

从0开始的 TypeScriptの十四:内置工具类型

空城机

typescript 7月月更

从 0 到 1 开展软件测试

声网

测试 生态专栏

使用 Gorilla Mux 和 CockroachDB 编写可维护 RESTful API

宇宙之一粟

Go 语言 CockroachDB 7月月更

SVN使用:更新代码不成功导致SVN被锁定的解决方法

三掌柜

7月月更

ArkUI常见问题汇总【系列3】

坚果

HarmonyOS Open Harmony 7月月更

【古月21讲】ROS入门系列(2)——发布者Publisher、订阅者Subscriber的编程实现+自定义话题消息编程实现

秃头小苏

ROS 7月月更

语音聊天源码——语音聊天源码开发设计搭建

开源直播系统源码

软件开发 直播系统源码 开源源码 语音聊天源码 语音社交软件

1800字带您了解视频会议、视频聊天底层技术:WebRTC 网页实时通信

wljslmz

WebRTC 音视频技术 视频技术 7月月更

Docker 安装 MySQL8.0

宁在春

MySQL Docker 镜像 7月月更

浅入浅出mybatis(四)

ES_her0

7月月更

LaTex笔记(Windowns)

乌龟哥哥

7月月更

阿里云架构师马颂:云上高性能计算助力基因测序

阿里云弹性计算

高性能计算 EHPC 基因测序

zookeeper-zookeeper常用命令

zarmnosaj

7月月更

iOS中的Block(初步认识)

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

谈谈JavaScript的作用域及作用域链

南极一块修炼千年的大冰块

7月月更

Istio Mesh模型

阿泽🧸

7月月更 Istio Mesh

查找——二叉排序树(一)

乔乔

7月月更

深入Ceph原理包含核心算法Crush说明和通信机制原理(五)

Lansonli

云原生 Ceph 7月月更

spark调优(六):大家好才是真的好——广播变量

怀瑾握瑜的嘉与嘉

spark 7月月更

镍氢电池的特性和使用方法(FDK镍氢电池充电机制)

不脱发的程序猿

嵌入式 汽车电子 镍氢电池 镍氢电池充电逻辑 FDK镍氢电池

Java方法重载及递归

未见花闻

7月月更

jQuery(三)

Jason199

jquery js 7月月更

即时通信的应用小实例——扫码签到小系统

为自己带盐

即时通信 7月月更

mysql进阶(三)游标简易知识点汇总

No Silver Bullet

MySQL 数据库 游标 7月月更

Linux下QT配合OpenCV完成图像处理(实现基本的人脸检测)

DS小龙哥

7月月更

容器应用发布三大方案

穿过生命散发芬芳

容器应用 7月月更

MFC|自绘CStatic刷新不及时问题

中国好公民st

c++ 7月月更

如何控制css鼠标样式以及扩大鼠标点击区域

南极一块修炼千年的大冰块

7月月更

玩转Liunx系统,看这篇文章就够了(二)

Java学术趴

7月月更

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