《混沌工程-复杂系统韧性实现之道》笔记

日月星辰 发布在Reading

Chaos Engineering-System Resiliency in Practice

混沌工程的诞生

Neflix积极倡导的一种独特的文件理念。Netflix为解决可用性下滑问题所采取的几种做法,如:

尽管可以写下几种常用的模式来将服务编写得足够健壮,以解决实例无故消失的问题,但Netflix仍无法向整个工程组织发出命令,要求每个人都遵循这些模式。

混沌工程其实是将系统所固有的混沌进行可视化。
进行混沌工程的意义首先是建立信心

混沌工程5项高级实践原则,为混沌工程实践设定了黄金标准:

搭建舞台

混沌工程是专门为主动理解并应对复杂系统而创建的学科。
遵循经验丰富的工程师和架构师学习管理复杂性时的自然顺序:思考、遇到、面对、接纳和应对。

1. 遇到复杂系统

思考复杂性

架构师的角色之所以能得到发展,是因为他可以从思维上对整个系统进行建模,并且知道所有部分是如何组合在一起的。

遇到复杂性

组件之间的交互作用超出了人类将复杂系统的所有部件都掌握在自己脑海中的能力。
团队中每个人对产品假设都存在差异。

面对复杂性

一种流行的想法是减少或消除复杂性。

偶然复杂性

在编写代码时,总是会产生偶然复杂性。

本质复杂性

软件的本质复杂性体现在所编写的代码中。

试图将复杂系统转变为简单系统的前景并不乐观。
只要进行工作,就会附带产生偶然复杂性;
只要开发新功能,就会驱动本质复杂性的产生。

接纳复杂性

  1. 接纳复杂性
  2. 学习如何应对得要性。

作为一名工程师,混沌工程可能是开始应对系统复杂性的最可行和最有效的方法。

2. 应对复杂系统

动态安全模型

混沌工程可以帮助工程师培养本来就一直缺乏的有关安全性的直觉。向工程师传授安全性方面的各种机制是如何在整个系统的复杂性中相互作用的。

复杂性的经济支柱模型

混沌实验可以使脆弱的地方浮出水面,然后可以优化其"可逆性"。

3. 原则概述

混沌工程实践
为了具体地解决分布式系统在规模上的不确定性,可以把混沌工程看作是为了揭示系统弱点而进行的实验。这些实验遵循四个步骤:

破坏稳态的难度越大,我们对系统行为的信心就越强。如果发现了一个弱点,那么我们就有了一个改进目标。避免在系统规模化之后被放大。

混沌工程实践的重点是主动提高复杂系统的可用性和安全性。