混沌工程原理概述
1. 混沌工程简介
早期,混沌工程的概念并不清晰,存在一些诸如“拔掉电线”“破坏东西”或“在生产环境中测试”等流行语,人们对如何确保服务可靠性也存在诸多误解,且实际可用的工具寥寥无几。为了创建一门有意义的学科,通过工具主动提升可靠性,混沌团队应运而生。团队花费数月研究弹性工程等学科,最终给出了混沌工程的定义和蓝图,并将其发布在网上,形成了所谓的“原则”。
2. 混沌工程的定义
混沌工程通常被定义为“通过实验揭示系统弱点”。其具体实验步骤如下:
1. 定义“稳定状态”:将系统的某种可测量输出定义为稳定状态,以此表示系统的正常行为。
2. 提出假设:假设在对照组和实验组中,稳定状态都将持续。
3. 引入变量:引入反映现实世界事件的变量,如服务器崩溃、硬盘故障、网络连接中断等。
4. 验证假设:通过对比对照组和实验组的稳定状态差异,尝试推翻假设。
这些实验步骤构成了混沌工程的基本原则,且在实施这些实验时具有很大的灵活性。
3. 实验与测试的区别
在Netflix,我们发现有必要明确混沌工程是一种实验,而非测试。虽然两者都可归入“质量保证”范畴,但“质量保证”在软件行业常带有负面含义。
其他团队起初会问混沌团队:“能不能编写一系列集成测试来实现相同的目标?”从理论上讲,这种想法很实用,但在实践中,集成测试无法达到预期效果。
3.1 测试的特点
严格来说,测试并不能创造新知识。编写测试的工程师需要事先了解系统的特定属性。在复杂系统中,人类无法理解系统各部分所有潜在交互的副作用。测试基于现有知识做出断言,
超级会员免费看
订阅专栏 解锁全文
57

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



