扫码阅读
手机扫码阅读

我对混沌工程的理解

99 2024-02-24
以前写过两篇混沌工程相关的文章:
《学习笔记之初识混沌工程》
《大厂在混沌工程领域的实践》
前段时间帮一家To B企业为甲方的一个技术方案做在线支持和咨询答疑,主要是混沌工程相关的工程实践如何落地。在几天的沟通交流过程中,自己也收获了很多,对混沌工程有了很多新的认识。
这篇文章,来聊聊我对于混沌工程的一些新的思考和理解。

混沌工程是什么

混沌工程,最早是Netflix提出并实践的。初衷是为了尽可能早发现并解决复杂的分布式系统架构下,生产环境随时可能出现的各种故障。他们还出了一本书,名字叫《混沌工程:Netflix系统稳定性之道》。这本书在工程实践的细节上没太多的披露,但是在工程理念、实践方法和注意事项等方面,有很多让人耳目一新的观点。
我们都知道,系统越复杂,对系统稳定性的影响因素越多,随之带来的线上问题出现的概率和数量也越多。但这种复杂度并不是说可以人为就可以控制的,主要因素有如下三点:
  • 用户需求在不断变化,随之而来的业务的复杂化、多样化、快速迭代;
  • 业务倒逼系统架构不断优化和演进:服务集群→分布式→微服务→容器化→上云;
  • 业务和技术的迭代演进过程会引入新的风险,因为人对风险往往会产生低估或者忽视;
为了应对这种复杂系统架构下生产环境随时可能出现的问题,出现了很多解决方法,典型的有:
  • 组织&流程:7*24小时值班、在线oncall应急响应机制;
  • 技术&方法:SRE、生产全链路压测、容灾演练、异地多活;
而混沌工程,也是在这个阶段,提升系统稳定性的一种工程实践方法论。

混沌工程的实践方法

Netflix提出了在实施混沌工程时需要遵守的一些经典原则,主要有如下几点:
  • 建立稳定状态的假设(制定合适的目标);
  • 多样化现实世界事件(选择合适的场景);
  • 在生产环境运行实验(在真实环境运行实验);
  • 持续自动化运行实验(避免人为误操作风险);
  • 最小化控制爆炸半径(控制实验的影响范围和程度);
信通院关于混沌工程实践,有一套综合了业内大量实践案例的评估准则,主要内容如下:
  • 混沌工程应具备的功能及服务能力:覆盖基础设施、平台功能、平台性能及支撑能力,平台功能包括故障场景、介质管控、场景库管理、演练计划、演练流程、演练防护、演练观测及演练报告。
  • 混沌工程的成熟度模型和评估等级
    • 基础级:能够基本实现功能要求;
    • 增强级:在基础级别能上,具备较高级的功能实现;
    • 先进级:在增强级能力上,具备行业内领先的功能实现;
综合Netflix和信通院的方法原则,结合我的实践经验,混沌工程在实际的工作场景中落地,有如下几点注意事项:
1、实施混沌工程前,应该对系统当前的稳定性进行全面的评估和度量;
2、混沌工程的核心理念是风险可观测可控制,其本质是一种风险“左移”的技术理念;
3、最小化爆炸半径,需要完善的监控告警工具、应急响应机制和预案来兜底,否则就是裸奔;
4、故障场景要以业务视角来梳理,而不是单纯的技术视角(比如内存溢出、容器重启、机房断电);
5、虽然提倡故障注入要在生产环境进行,但在刚开始试验阶段,还是建议在测试环境开展,先跑通流程,锻炼团队;

最后,谈一点个人对混沌工程和稳定性保障的理解。
混沌工程并不是银弹,并不能看作有混沌工程就可以保障系统不出问题。混沌工程引入的前提,需要团队在基础技术设施方面有较好的建设,比如服务治理、监控告警、应急响应以及故障解决案例沉淀。
稳定性保障是一个长久的过程,更是一个持续的过程。各种工具、平台、方法都是辅助我们提升系统稳定性的手段。要真正做好稳定性保障工作,最终还是要有一致的目标,有长期的耐心去实践、试错,需要和业务团队达成良好的沟通协作关系。






原文链接: http://mp.weixin.qq.com/s?__biz=Mzg2NDAwMjM1NQ==&mid=2247487217&idx=1&sn=12f0b582cde90d43cafcbbed8bfa93c1&chksm=ce7146adf906cfbb43900f764ba898025bdb7d1b6dd56c213af96729797ea8df7e1832eb9253#rd