QCon上海站购票倒计时最后3天!查看精彩日程 了解详情
写点什么

抓住那只捣乱的猴子,中国移动的混沌工程实践

2021 年 9 月 19 日

抓住那只捣乱的猴子,中国移动的混沌工程实践

睡梦正酣,你被一阵密集的电话铃声吵醒,匆匆抹了把脸赶到公司,加入正在进行的讨论。夜幕退去,天色渐亮,你的思路越发清晰,看着电脑屏幕上畅通运行的程序,松了口气。紧接着,疲惫感如潮水般向你涌来。

 

这是对技术人员而言并不陌生的场景,也是威胁年轻程序员毛囊健康的主因之一。脱落的是毛发,迸发的是灵感。中国移动对于混沌工程有了最初的想法,也是在这样一个被叫醒的深夜。

从故障中来

中国移动信息技术中心磐基PaaS平台运营运维团队在一个处理故障到五六点的凌晨,向自己发出疑问:平时总结在流程、运维等方面准备了很多,为什么关键时刻,这些东西起不到作用?磐基 PaaS 平台目前只是支持中国移动的上百个系统,未来要支持更多系统,怎么才能真正做到“乘舟上云,稳如磐基”?

 

中国移动磐基 PaaS 平台是中国移动信息技术自主研发的云原生平台,目前已建设 K8S 集群 144 个,生产节点规模近 1.1 万个,容器总实例数超过 20 万个,提供微服务框架支撑能力、服务治理能力,解决微服务的分布式特点带来的管理复杂性。而混沌工程,是专门为主动理解并应对复杂系统而创建的学科,如今普遍被用于分布式架构和云原生环境中。

 

混沌工程的诞生,是为了建立对系统抵御生产环境中失控条件的能力以及信心。2010 年,Netflix 为了在避免迁移时可能出现的故障影响用户体验,开发了 Chaos Monkey,用于提前测试系统。在实践过程中,这个想法和测试工具被不断完善,衍生出“混沌工程师”的角色,在工程社区推广,并在《Principles Of Chaos》中被正式总结为“混沌工程”。随着越来越多的大公司开始了解和实践混沌工程,2018 年,不断迭代的混沌工程(Chaos Engineering)成为 CNCF 一个新的技术领域。

 

中国移动解决故障的思路是“自己折腾自己”——探知风险、预测风险、挖掘风险。 

到“混沌”中去

由于业务场景、人员结构、实施方式等指标的差异性,系统稳定性的评判标准往往难以统一。此前对业务系统的上云架构评审以及高可用测试方案,都是由工程师根据经验主观推断出来的。系统稳定性、功能合理性、服务完备性如何证明?传统方案上我们只能证明系统可能会出现问题,而不能证明系统一定不会出现问题,无穷性出发点使我们没有办法证明系统的正确性。所以中国移动磐基 PaaS 平台引入了混沌工程,用混沌工程在系统上的逻辑性来证明系统的正确性。

 

故障注入、故障测试和混沌工程,是业内容易被混淆的话题。在磐基团队看来,混沌工程并不是在制造混沌,制造故障,而是将系统固有的混沌进行可视化。在整个混沌工程领域下包含了反脆弱性、故障注入、故障测试等相关范畴,所以它不仅仅是测试,其方法可以理解为探索性测试与可观测技术的结合。“混沌工程与反脆弱的一个关键区别是混沌工程让人认识到混沌为系统固有,从而提高团队韧性,而反脆弱目的是让系统在响应混沌时变得更强大。但混沌可以通过上述方法去辅助系统的理解,所以认为它是大小集合的概念。”

 

混沌工程的黄金标准是:

  • 建立关于稳态行为的假说

  • 多样化引入真实故障事件

  • 在生产环境中进行实验

  • 持续运行自动化实验

  • 最小化爆炸半径

磐基混沌能力发展路径,包括接触和使用混沌工程的能力,混沌平台建设和深化应用。

 

磐基团队表示,混沌工程建设方面,最开始是利用工具实现高可用场景进行场景侧的小范围试点,在平台构建的过程中进行业务规划研讨、混沌团队建设和用户试用,平台发展的过程包括:用户业务研讨、稳态防御、应用推广、流程细化等。工具选型方面,基于支持不同的应用架构与部署架构,支持不同资源的故障场景,以及部署方便,中国移动磐基 PaaS 平台选定阿里开源的ChaosBlade作为混沌工程能力的底座。

中国移动的混沌工程实践经验

中国移动在混沌工程的实践已经经历了多次迭代。“我们其实最初的平台建设,是先从故障注入的那种角度先进行,然后根据混沌工程的理念,往里面再增加一些监控。举个例子,对一个演练进行混沌工程的测试,可能某些指标上升了,如果我们对这个系统的认知不够全面,故障一旦注入,可能会导致故障的蔓延式发展。”

 

什么样的企业需要做混沌工程?从行业属性上来看,磐基团队比较建议对用户感知比较高的企业做混沌工程,比如金融证券行业。在中国移动,用户感知高的业务,比如电话停机、卡券售卖,一旦出现故障,会立刻反馈道用户端,降低用户体验。毕竟,业务端的业务量可能有上线,但变更无止境,故障也不会完全消失。混沌工程的意义在于可以减少故障发生的几率,并且让系统在面对故障时拥有快速响应、恢复的可能性。所以,距离用户最近的业务、用户感知度高的业务,需要考虑进行混沌工程实验。

采访嘉宾简介:

赵淳,磐基 PaaS 运营维护总监,负责磐基 PaaS 在集、省、专推广、交付与后期运维,有多项国际认证,熟悉容器、微服务以及数据库、中间件等云原生技术,有多年省 BOSS、CRM 建设运维经验。

严俊,磐基 PaaS 平台开发组成员,多年深耕于大数据、云原生等领域,主导中国移动磐基 PaaS 平台混沌工程能力的研发和建设工作。目前主要负责磐基 PaaS 平台在边缘云、混沌工程、AIOPS 等领域的技术研究与落地工作。

袁庆彬,中国移动磐基平台运营运维团队成员,IT 运维专家,长期致力于 IaaS、PaaS 领域。负责磐基平台服务连续性治理、平台架构优化和能力组件提升工作。

晁元宁,磐基 PaaS 平台运营维护组成员,PaaS 交付专家、混沌工程专家,长期致力于云原生、PaaS、混沌工程等领域。负责磐基 PaaS 平台项目上云的运维和运营工作,主要对接集团公司、专业公司、省公司的上云项目,负责项目对接、项目交付、项目维护,具备丰富的交付、运维、应急演练等经验。


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

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

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


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


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


2021 年 9 月 19 日 08:444797

评论

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

霸榜Git!2021年阿里巴巴Java面试权威指南(全彩版)

云流

Java 程序员 面试 架构师

趋势预测:2021年五大流行的编程语言

薇薇

Java c php JavaScript Python PEP

JDBC—往MySQL中写入Blob数据时,出现错误:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5724349 > 1048576)

打工人!

Java MySQL JDBC Blob

聊聊 Python 自动化脚本部署服务器全流程(详细)

星安果

Python 自动化 服务器 部署

DCache 分布式存储系统|Set, ZSet 缓存模块的创建与使用

TARS基金会

nosql 缓存 分布式 MySQL 高可用 TARS

如何评估需求优先级?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

容器 & 服务:Kubernetes扩容

程序员架构进阶

Docker 容器 kubernete 28天写作 3月日更

github 这样用,事半功倍

hepingfly

Java GitHub 搜索 使用技巧

以数字人民币为契机 推动人民币国际化进程

CECBC区块链专委会

金融

发布两小时,霸榜GitHub!Spring Boot实战文档

云流

Java 编程 程序员 架构师

炸裂,IBM系统架构师居然把自己15年Java经验整合成一本小说?

Java架构师迁哥

filecoin挖矿软件开发|filecoin挖矿APP系统开发

开發I852946OIIO

系统开发

声网Agora发布创业支持计划:聚合50+合作伙伴、11项资源扶持创业者

ToB行业头条

声网 Agora

让GitHub低头的10W字阿里内部Java面试手册有多强?

Crud的程序员

Java 编程 程序员 架构

科技进化的终点,与荣耀全场景的起点

脑极体

前端开发: 路由跳转页面详解

三掌柜

vue.js 前端 3月日更

"无密码时代"已经来临!

龙归科技

身份认证

经典排序算法分析

roseduan

算法 排序算法

mybatis实现分页的几种方法

xiezhr

mybatis 分页 mybatis分页

寻找被遗忘的勇气(十八)

Changing Lin

3月日更

打卡学习VBA和PYTHON week01

小怪兽

IT蜗壳教学

filecoin云算力软件开发|filecoin云算力APP系统开发

开發I852946OIIO

系统开发

低代码/无代码,作为IT开发界的“新英雄”它究竟有何神技?

优秀

低代码 无代码开发

B+树索引优点

一个大红包

3月日更

图解垃圾算法,No,捡垃圾算法

叫练

GC算法 引用计数法 标记清除法

php 再上热搜!swoole 创始人投出反对票,质疑 php 协程最新提案

薇薇

php 编程 新特性 php扩展

uni-app跨端开发H5、小程序、IOS、Android(二):开发工具HBuilderX使用技巧

黑马腾云

微信小程序 uni-app App 3月日更 Hbuilderx

收藏!这些IDE使用技巧,你都知道吗

xcbeyond

IDEA 技巧 3月日更

一周信创舆情观察(3.8~3.14)

统小信uos

epoll源码分析以及在Redis中的实现

Linux服务器开发

redis 后端开发 epoll web服务器 Linux服务器开发

filecoin矿机系统开发|filecoin矿机软件APP开发

开發I852946OIIO

系统开发

抓住那只捣乱的猴子,中国移动的混沌工程实践-InfoQ