阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

    阅读完需:约 10 分钟

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

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

 

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

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

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

 

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

 

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

 

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

混沌工程的实践误区

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

 

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

 

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

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

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


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

 

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

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

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

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


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

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

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

 

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

 

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

 

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

混沌工程不只有技术价值

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

 

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

 

采访嘉宾简介:

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


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

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

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


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


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


2021-10-15 20:013295

评论

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

架构作业--大数据

Nick~毓

旷工三天被开除,公司赔偿十万五 | 法庭上的CTO(9)

赵新龙

CTO 法庭上的CTO

期权代持的“坑”里,加拿大人也在 | 法庭上的CTO(11)

赵新龙

CTO 法庭上的CTO

Java并发编程:多线程如何实现阻塞与唤醒

码农架构

Java并发

生产环境全链路压测建设历程之十 淘宝网2013年的建设过程

数列科技杨德华

DolphinDB与MongoDB在时序数据上的对比测试

DolphinDB

mongodb 分布式系统 时序数据库 DolphinDB 数据库开发

C语言服务器编程必备常识

MySQL从删库到跑路

c

从零开始学习Java8 Stream,看这篇就够了

Silently9527

Java stream java8

anyRTC实时音视频-社交娱乐解决方案

anyRTC开发者

ios android 音视频 WebRTC RTC

DeFi(去)中心化DAPP系统软件开发

系统开发

硬核编程:30天=一个网站+一份周刊

老魚

程序员 建站 web全栈

盘点2020 | 30岁了,我终于入门编程了

盘点2020

【经验分享】RTC技术系列之音频编解码

Hanson

SPI 在 Dubbo中 的应用

vivo互联网技术

Java jdk dubbo spi

1428万的Adobe采购纠纷 | 法庭上的CTO(10)

赵新龙

CTO 法庭上的CTO

【小菜学网络】数据链路层概述

fasionchan

网络编程 计算机网络 网络协议 TCP/IP

码了2000多行代码就是为了讲清楚TLS握手流程(续)

Gopher指北

https Go 语言

第三代人工智能基础设施背后,是一次技术应用的常识普及运动

脑极体

架构师训练营W09作业

Geek_f06ede

如何快速打造一款钉钉 Go sdk

Ceelog

钉钉 企业微信 Go 语言

SSO的通用标准OpenID Connect

程序那些事

OAuth 2.0 程序那些事 授权框架 安全框架 openid

JVM从概述到调优图文详解,含思维脑图深度剖析!

Java架构师迁哥

甲方日常 68

句子

工作 随笔杂谈 日常

架构之书:雄伟与《Domain Driven Design》

lidaobing

架构 领域驱动设计

数据类型第2篇「字典和集合的原理和应用」

清菡软件测试

测试开发

量化交易APP系统软件开发(现成)

系统开发

在线医疗的发展和优势

anyRTC开发者

android 音视频 WebRTC RTC 医疗方案

Canvas入门实战之用javascript面向对象实现一个图形验证码

徐小夕

Java 大前端 canvas

通过Postman和coding.net发布API

太极程序员

Postman API

架构师训练营 Week8 - 课后作业

极客大学架构师训练营

Spring Boot 集成 Redis

噜噜猫

Spring Boot

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