HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

    阅读完需:约 10 分钟

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

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

 

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

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

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

 

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

 

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

 

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

混沌工程的实践误区

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

 

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

 

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

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

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


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

 

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

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

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

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


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

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

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

 

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

 

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

 

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

混沌工程不只有技术价值

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

 

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

 

采访嘉宾简介:

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


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

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

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


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


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


2021-10-15 20:013568

评论

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

Databend v0.9.0 版本发布

Databend

阅文加入 OpenCloudOS 操作系统社区,作为成员单位参与社区共建

OpenCloudOS

Linux

致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划

tapdata

华为云云原生数据库:A Philosophy about “less”

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

光神经网络ONN:直接对光信号进行神经网络处理

Zilliz

DTSE Tech Talk 第18期丨统计信息大揭秘,数仓SQL执行优化之密钥

华为云开发者联盟

数据库 sql 后端 华为云 企业号 1 月 PK 榜

KaiwuDB 首席解决方案专家 金宁:1.0 时序数据库核心功能解读

KaiwuDB

时序数据库 海量数据高吞吐 复杂查询

以数据赋能AI量产落地,澳鹏团队在浦东AI智能创新应用大赛斩获佳绩

澳鹏Appen

人工智能 数据标注

Cloud Kernel SIG月度动态:建立社区第三方驱动研发流程、发布ANCK 4.19-027版本 | 龙蜥 SIG

OpenAnolis小助手

内核 龙蜥社区 sig 版本发布 anck

为什么MySQL数据删除了一半,表文件体积却没变小?

程序员拾山

MySQL

华为云GaussDB(for MySQL)通过中国信通院“可信数据库”评测

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

一个专科生的 2022 年终总结——默默努力,成为更好的自己

程序人生 年终总结 成长感悟 自学之路

2022年15款实用有趣的小程序推荐

FN0

小程序 小程序商城 小程序模版

软件测试/测试开发 | 接口自动化测试中如何对xml 格式做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发 接口自动化

技术型创业公司如何把握发展与管理的节奏感?

石云升

极客时间 1月月更 技术领导力实战笔记

理想问鼎销冠,数据库能帮助新能源车企赢得下半场么?

YMatrix 超融合数据库

案例分享 新能源汽车 造车新势力 超融合数据库 YMatrix

TDengine 时序数据特色查询语法详解,助力时序场景下的应用开发

TDengine

数据库 tdengine 时序数据库

别忘记我:通过局部-全局内容建模进行文本擦除方法

合合技术团队

图像识别 图像处理 文本 图像擦除

火出圈的《中国奇谭》,如果浪浪山的小妖怪们也用WorkPlus

WorkPlus

来自掘金和 InfoQ 的“新年礼物”,时序数据库 TDengine 荣登两大知名技术社区重磅榜单

TDengine

数据库 tdengine 时序数据库

SAST-静态应用安全测试

华为云PaaS服务小智

特定领域知识图谱(DKG)融合方案:技术知识前置【一】-文本匹配算法、知识融合学术界方案、知识融合业界落地方案、算法测评KG生产质量保障

汀丶人工智能

自然语言处理 知识图谱 实体对齐

一次偶然机会发现的MySQL“负优化”

骑牛上青山

MySQL 数据库 索引

玖章算术CEO叶正盛:程序员必须掌握的数据库原理

NineData

数据库 程序员 开发 dba 数据库技术

Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

华为云开发者联盟

云计算 云原生 华为云 Volcano 企业号 1 月 PK 榜

软件测试/测试开发 | 接口自动化测试中,如何做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发

软件测试/测试开发 | 接口测试中如何使用Json 来进行数据交互 ?

测试人

json 软件测试 自动化测试 接口测试 测试开发

【表面缺陷检测】表面缺陷检测数据集汇总

机器不学习我学习

Sealer 0.9 :帮助集群和分布式应用实现 Build、 Share、Run

阿里巴巴云原生

阿里云 开源 云原生 sealer

中冶赛迪*IoTDB | 多项目全流程以IoTDB为时序数据处理方案,预计写入查询效率提升一倍

Apache IoTDB

国产时序数据库

ING国际银行基于Volcano的大数据分析平台应用实践

华为云开发者联盟

云计算 云原生 后端 华为云 企业号 1 月 PK 榜

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