我对混沌工程的理解

以前写过两篇混沌工程相关的文章:

《学习笔记之初识混沌工程》

《大厂在混沌工程领域的实践》

前段时间帮一家To B企业为甲方的一个技术方案做在线支持和咨询答疑,主要是混沌工程相关的工程实践如何落地。在几天的沟通交流过程中,自己也收获了很多,对混沌工程有了很多新的认识。

这篇文章,来聊聊我对于混沌工程的一些新的思考和理解。

 

混沌工程是什么

混沌工程,最早是Netflix提出并实践的。初衷是为了尽可能早的发现并解决复杂的分布式系统架构下,生产环境随时可能出现的各种故障。

他们还出了一本书,名字叫《混沌工程:Netflix系统稳定性之道》。这本书在工程实践的细节上没太多的披露,但是在工程理念、实践方法和注意事项等方面,有很多让人耳目一新的观点。

我们都知道,系统越复杂,对系统稳定性的影响因素越多,随之带来的线上问题出现的概率和数量也越多。但这种复杂度并不是说可以人为就可以控制的,主要因素有如下三点:

  • 用户需求在不断变化,随之而来的业务的复杂化、多样化、快速迭代;
  • 业务倒逼系统架构不断优化和演进:服务集群→分布式→微服务→容器化→上云;
  • 业务和技术的迭代演进过程会引入新的风险,因为人对风险往往会产生低估或者忽视;

为了应对这种复杂系统架构下生产环境随时可能出现的问题,出现了很多解决方法,典型的有:

  • 组织&流程:7*24小时值班、在线oncall应急响应机制;
  • 技术&方法:SRE、生产全链路压测、容灾演练、异地多活;

而混沌工程,也是在这个阶段,提升系统稳定性的一种工程实践方法论。

 

混沌工程的实践方法

Netflix提出了在实施混沌工程时需要遵守的一些经典原则,主要有如下几点:

  • 建立稳定状态的假设(制定合适的目标);
  • 多样化现实世界事件(选择合适的场景);
  • 在生产环境运行实验(在真实环境运行实验);
  • 持续自动化运行实验(避免人为误操作风险);
  • 最小化控制爆炸半径(控制实验的影响范围和程度);

信通院关于混沌工程实践,有一套综合了业内大量实践案例的评估准则,主要内容如下:

  • 混沌工程应具备的功能及服务能力:覆盖基础设施、平台功能、平台性能及支撑能力,平台功能包括故障场景、介质管控、场景库管理、演练计划、演练流程、演练防护、演练观测及演练报告。
  • 混沌工程的成熟度模型和评估等级
    • 基础级:能够基本实现功能要求;
    • 增强级:在基础级别能上,具备较高级的功能实现;
    • 先进级:在增强级能力上,具备行业内领先的功能实现;

综合Netflix和信通院的方法原则,结合我的实践经验,混沌工程在实际的工作场景中落地,有如下几点注意事项:

1、实施混沌工程前,应该对系统当前的稳定性进行全面的评估和度量;

2、混沌工程的核心理念是风险可观测可控制,其本质是一种风险“左移”的技术理念;

3、最小化爆炸半径,需要完善的监控告警工具、应急响应机制和预案来兜底,否则就是裸奔;

4、故障场景要以业务视角来梳理,而不是单纯的技术视角(比如内存溢出、容器重启、机房断电);

5、虽然提倡故障注入要在生产环境进行,但在刚开始试验阶段,还是建议在测试环境开展,先跑通流程,锻炼团队;

 

最后,谈一点个人对混沌工程和稳定性保障的理解。

混沌工程并不是银弹,并不能看作有混沌工程就可以保障系统不出问题。混沌工程引入的前提,需要团队在基础技术设施方面有较好的建设,比如服务治理、监控告警、应急响应以及故障解决案例沉淀。

稳定性保障是一个长久的过程,更是一个持续的过程。各种工具、平台、方法都是辅助我们提升系统稳定性的手段。要真正做好稳定性保障工作,最终还是要有一致的目标,有长期的耐心去实践、试错,需要和业务团队达成良好的沟通协作关系。

 

posted @ 2023-06-09 10:03  老_张  阅读(135)  评论(0编辑  收藏  举报