回答这个问题,首先要处理下,混沌工程的界说

什么是混沌工程?

关于混沌工程的界说,各家都有自己的说法。下面是引证自傲通院在《混沌工程实践指南(2021年)》中关于混沌工程的界说。

混沌工程(Chaos Engineering)是经过自动向体系中引进软件或硬件的异常状况(扰动),制造毛病场景并依据体系在各种压力下的行为表现承认优化战略的一种体系安稳性确保手法。
运用混沌工程能够对体系反抗扰动并坚持正常运作的才能(安稳性)进行校验和评价,提早辨认未知隐患并进行批改,然后确保体系更好地抵御出产环境中的失控条件,提升全体安稳性。

混沌工程是一种增加体系安稳性,承认体系优化战略的手法;也是一种认知杂乱体系的手法。

混沌工程听上去不错,但它是怎样协助咱们改善体系安稳性的?

2008年开端,Netflix 开端将计算渠道从自有机房往AWS进行搬迁,直到2010年末完结计算渠道的完结整个进程。如此大规划的搬迁作业,显然需求处理许多问题:
1、事务长期跑在自建数据中心和AWS云上两种架构混合状况下,假如确保事务安稳性?
2、Netflix 预算共需求在云上搭建10多万个实例,在如此规划的运用体系下,假如确保事务安稳性?
3、作为在线视频事务,每1秒的事务终端都会形成巨大的经济损失,怎么确保事务体系在微服务化进程中的安稳性?
关于这些问题的探求,经过加强高可用性规划,进步代码健壮性,加大测验规模,进步监控敏感度,都无法有用阻止毛病产生。这种状况引发了Netflix关于出产毛病的另一种考虑:是不是咱们现有条件下现已无法完好认知整个杂乱体系?又或许,毛病是不是自身就无法防止,咱们需求从被迫处理毛病,改为自动知道毛病?Netflix 面对这些问题时,内部开发了随机终止AWS上的EC2实例的试验工具,名为Chaos Monkey。意在经过毛病试验的办法,重新知道毛病和事务体系。Chaos Monkey 又展开成为 Chaos Kong(关闭整个可用区)以及后来的(ChAP,Chaos Automation Platform)混沌自动化渠道。标题: fig:
依据Netflix的经历,借助渠道工具进行自动化的、频频的、可控的试验,能够很好的认知杂乱体系,并进步体系应对毛病时的信心。
履行混沌工程的目的便是为了提升体系安稳性,而且经过规范化和流程化的混沌工程作业的展开,改变咱们关于毛病的态度:“既然毛病无法防止,就让毛病在可控规模内频频产生,让咱们认知毛病、认知体系,并进行继续改善”

混沌工程如此杂乱,都需求哪些安排来履行?

依据各个安排架构的分工不同,混沌工程能够从测验、运维、出产运转办理等安排内进行切入。
1、从测验切入时,一般作用于对测验体系的弥补验证。混沌工程试验自身与非功能测验就有许多交集,但又有差异。、首要差异在于,测验是验证已知问题的成果,混沌工程是增加对体系的未知部分的探究。

差异点 测验 混沌工程
全体方针 证明产品符合需求 取得更多对体系的认知
履行环境 开发、测验、准出产等专属环境(非出产) 推荐在可控的出产环境
场景来源 体系的规划文档,需求的穿插组合 多样的实际事件做毛病场景
测验办法 依据体系接口规划输入 依据体系架构和实际毛病组合测验
输出成果 二元性的测验成果:“符合”、“不符合” 对体系自身的认知(进程财物)
成果影响规模 体系逻辑代码的批改 体系架构、体系运转资源、体系代码的调整

2、从运维切入时,一般能够作用于对体系架构安稳性的验证。包含:对根底环境的安稳性查验。如:网络设备、物理服务器、操作体系、中间件产品、运用体系的全体架构的抗压才能、运用体系在各个负载状况下的服务状况等。尤当时当运转安稳的体系,引进新的组件时,混沌工程试验能够协助咱们认知新组件引进后体系的表现。咱们运用体系引进和运用信创产品时,混沌工程试验能够很好协助咱们制定产品基线,并进行有用的查验。在信创产品上线之前充分辨认风险,提早处置、批改问题。有用根绝信创产品“带伤”上线。在验证运用对出产毛病的批改时,经过渠道化的混沌工程试验,将毛病时各个组件的状况进行回放式模仿,使验证更方便。相同的,开发人员也能够经过这种回放场景,来验证毛病产生时,体系的反应,剖析毛病产生的根本原因。
3、从出产运转切入时,一般能够作为验证安排关于体系毛病预案的熟悉程度,以及预案的有用性的辅助工具。经过混沌工程渠道,能够很好的控制毛病注入的半径规模,并依据实际毛病,生成试验场景。验证预案并将预案的履行进程进行记载,方便后续剖析。继续协助安排完善应急响应和毛病预案。

这么多安排都能够进行混沌工程,混沌工程作业该怎么展开?

展开混沌工程能够依据企业安排详细需求进行,既能够自上而下进行建造,又能够从下而上逐渐形成体系。
自上而下进行建造时,体系的建造混沌工程时,主张遵从混沌工程准则,主张进行两部分作业:混沌工程体系建造的咨询作业和渠道的定制化作业。依据安排的切实需求,制定习惯的混动工程体系。经过咨询的作业,承认混沌工程的建造规模:如,安排进行混动工程试验的方针、哪些体系归入混沌工程渠道、哪些人员参加混沌工程相关作业,混沌工程试验的全流程安排进程。混沌工程渠道的定制化作业,首要处理关于现有体系的对接和纳管,而且依据安排进行混沌工程试验的方针。安排、定制毛病场景库,处理各安排间展开试验时的沟通。最重要的是关于试验的进程财物办理。混沌工程最大的含义在于进程财物,混沌工程试验关于试验的成果并不是非常看重,反而试验进程关于混沌工程试验具有重大含义。也便是说不管试验的成果怎么,咱们都能够经过试验的进程财物,改善体系的安稳性,知道体系。规划化、体系化的进行混沌工程试验,有必要具有渠道才能。
自下而上进行建造时,则能够经过小规划,安排内可控的混沌工程试验开端,能够先经过一些混沌工程开源工具,进行毛病注入测验,慢慢进步安排内的关于毛病处置的才能和逐渐进步体系安稳性。然后再慢慢进行跨安排,进行混沌工程试验,这时候仅仅靠开源工具是无法满足的。逐渐就会形成关于渠道的需求。此刻安排能够进行渠道的调研性作业,并依据安排的状况决定收购或许是自研。

总结

混沌工程的终极方针是经过频频的与体系互动,然后逐渐完善体系的认知。咱们既能够从上而下的体系化建造、也能够自下而上的逐渐渐进。但终究由于混沌工程的杂乱性,都将会需求渠道工具来进行支撑和办理,确保最大化毛病试验价值。