混沌工程原理概述
1. 混沌工程的定义
混沌工程起初并不明确其具体内涵。当时有一些关于拔掉电线、破坏东西或在生产环境中测试的流行说法,对于如何使服务可靠存在许多误解,且实际工具的示例也很少。后来形成了一个团队来创建一门有意义的学科,通过工具主动提高可靠性。他们经过数月研究,提出了混沌工程的定义和蓝图,并将定义发布在线上,即所谓的“原则”。
如今,混沌工程的常见定义是“促进实验以发现系统弱点”。其实验步骤如下:
1. 首先将“稳定状态”定义为系统的某种可测量输出,以指示正常行为。
2. 假设在对照组和实验组中,这种稳定状态都会持续。
3. 引入反映现实世界事件的变量,如服务器崩溃、硬盘故障、网络连接中断等。
4. 通过寻找对照组和实验组之间稳定状态的差异,尝试推翻假设。
这些实验构成了混沌工程的基本原则,并且在实验实施方式上有很大的灵活性。
2. 实验与测试的区别
在 Netflix,我们发现有必要明确混沌工程是一种实验形式,而非测试。虽然两者都可归入“质量保证”范畴,但“质量保证”在软件行业常带有负面含义。
其他团队最初会问混沌团队,能否编写一系列集成测试来达到相同目的。理论上这很务实,但实际上集成测试无法得到理想结果。
严格来说,测试不会创造新知识。编写测试的工程师需要知道他们要寻找的系统特定属性。然而,复杂系统对于这种分析是不透明的,人类无法理解复杂系统中各部分所有潜在交互的所有潜在副作用。测试基于现有知识进行断言,运行测试通常将断言结果归结为真或假,是关于系统已知属性的陈述。
而实验能创造新知识。实验提出假设,只要假设未被推翻,对该
超级会员免费看
订阅专栏 解锁全文
1001

被折叠的 条评论
为什么被折叠?



