Netflix正在搞的混沌工程到底是什么?终于有人讲明白了


Netflix正在搞的混沌工程到底是什么?终于有人讲明白了

文章插图
导读:与任何新概念一样,混沌工程时常被误解 。本文会探讨混沌工程是什么以及不是什么 。
作者:Casey Rosenthal, Nora Jones
来源:华章科技
在Netflix的混沌工程实践之初,大家实际上并不明确这门学科究竟是什么 。关于如何让服务更可靠存在着许多误解 。比如那时经常听到这样一些口号——拔掉电缆、在生产环境搞破坏或在生产环境进行测试 。另外,也几乎不存在混沌工程实际工具的例子 。
Netflix成立混沌工程团队就是要创建一门有意义的学科 。该学科能够借助工具主动提高可靠性 。我们花了几个月的时间研究韧性工程和其他学科,并提出混沌工程的定义和蓝图以造福他人 。
混沌工程的定义已经以宣言的形式上线,称为“混沌工程原则” 。
https://principlesofchaos.org
01 混沌工程是什么混沌工程原则定义了混沌工程学科,以便大家了解何时该进行、该如何进行以及该如何做好混沌工程 。如今,混沌工程的通用定义是“促进发现系统弱点的实验” 。混沌工程原则的网站概述了如下实验步骤:
  1. 首先定义“稳态”(steady state,稳定状态),以表示系统正常行为的某些可测量的输出 。
  2. 建立如下假说—对照组和实验组都将持续这种稳态 。
  3. 引入反映真实事件的变量,例如崩溃的服务器、发生故障的硬盘驱动器、断开的网络连接等 。
  4. 试图通过在对照组和实验组之间寻找稳态差异来推翻这一假说 。
该实验构成了混沌工程的基本原则,并为实验的实施提供了很大的自由度 。
1. 实验与测试
在Netflix,我们发现首先必须要做出的澄清是,混沌工程是一种实验而非测试 。可以说,“质量保证”涵盖了两者,但该词在软件行业通常具有负面含义 。
最初,Netflix的某些团队会问混沌工程团队:“难道你们就不能编写一堆集成测试来发现同样的问题吗?”从理论上讲,这种观点是务实的 。但实际上,不可能从集成测试中获得理想的结果 。
严格来说,测试不会创造新知识 。测试要求编写测试的工程师知道要验证的系统的特定属性 。复杂系统对于这种类型的分析是不透明的 。对于复杂系统中各个部件所有的潜在相互作用所带来的所有潜在副作用,人类根本就无法理解 。这使我们得出了测试的下述关键特性 。
测试会根据现有知识做出一个断言,然后执行测试,并给出该断言的结果(通常为真或假) 。测试是关于系统已知属性的声明 。
另一方面,实验创造了新知识 。实验提出了一个假说,只要假说不被推翻,对该假说的信心就会增强 。而如果假说被推翻了,那就会学到一些新东西 。这就能启动一个调查,以弄清楚假说为什么是错的 。
在复杂系统中所发生的事情的原因通常都不会是显而易见的 。实验可以建立信心,也可以让我们学到系统的新属性 。这是对未知的探索 。
因为测试需要有人提前提出断言,所以仅凭测试是无法取得通过实验而收获的洞察的 。实验引入了一种发现新属性的正规方法 。而当发现了系统的新属性后,完全可以将其转换为测试 。
实验还有助于将有关系统的新设想编码为新的假说,从而创建类似“回归实验”的实践,以便随着时间的推移而对系统做进一步探索 。
由于混沌工程诞生于应对复杂系统问题,因此该学科必须体现实验性而非测试性 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: