混沌工程:通过可控故障实验提升软件系统可靠性
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

Foreword
序言二

如果Mikolaj没有写这本书,那么也必须有人做同样的事情。话虽如此,要写出这样一本介绍实用方法的书是很困难的,因为很难找到同时具有Mikolaj的阅历和混沌工程经验的人。他具有分布式系统(尤其是在Bloomberg所从事的关键且复杂的系统)的背景,以及在PowerfulSeal上多年的付出,这使他拥有了独特的见解。没有多少人有时间和技能来从事企业级混沌工程的研究。

这种独特的见解在Mikolaj的实用主义方法中显而易见。通览所有章节,我们会看到一个反复出现的主题,该主题首先与进行混沌工程的价值主张联系在一起:风险和合同验证、整个系统的整体评估,以及“涌现性”特性的发现。

关于混沌工程,我们听到的最常见的一个问题是“它安全吗?”,第二个问题通常是“我要如何开始进行混沌工程?”。Mikolaj通过将虚拟机(VM)包含在本书的所有示例和代码中,很好地回答了这两个问题。任何具有运行应用程序基础知识的人都可以轻松地尝试常见的混沌工程场景,然后就可以探索更高级的场景。会把环境搞得一团糟吗?根本不用为此担心,只需关闭虚拟机并重新加载新副本即可。现在,你可以开始安全地进行混沌工程实验了。Mikolaj会在你的学习旅程中帮助你,从基本的服务中断(终止进程),到通过操作系统和应用程序级别的实验来制造缓存与数据库问题,整个过程都限制了“爆炸半径”来保证安全。

在此过程中,你会了解系统分析中的一些更高级的主题,例如有关伯克利数据包过滤器(Berkeley Packet Filter,BPF)、sar、strace和tcptop的部分,甚至包括虚拟机和容器。除了混沌工程,本书还介绍了SRE和DevOps实践。

本书提供了在多个领域、层级下进行混沌工程实验的实例,包括应用层、操作系统级别、容器、硬件资源、网络,甚至网络浏览器。其中的每个领域都足以写成一整章,甚至一本书。在这位经验丰富的引导者的指导下,你可以全面探索各种可能的实验。Mikolaj会以不同的方式适当地介绍每个领域,使你有信心在自己的技术栈中进行尝试。

本书非常实用,在对技术进行取舍时,并没有忽略那些细微的差别。例如,在第8章中,Mikolaj权衡了直接修改应用程序代码以运行实验(更轻松、更通用)与使用第三方工具(更安全,可在上下文中更好地扩展)等另一抽象层运行实验的利弊。这是实现混沌工程的务实考虑。我可以毫不夸张地说,在本书出版之前,其他混沌工程相关的文献都没有思考过如何对不同的方面进行权衡,这也使得本书成为混沌工程领域的有力补充。

如果你对混沌工程感到好奇,或者你已经对混沌工程的历史和优点了如指掌,那么本书可以带你一步一步、安全地进行实践。书中的练习可以为你提供实践经验,虚拟机中包含的示例和突击测验可以增强你的学习效果。你将会对复杂的系统有更好的理解,知道它们是如何工作的,以及它们是如何失败的。当然,你也因此可以构建、操作和维护更健壮的系统。毕竟,安全的系统通常都是复杂的。

Casey Rosenthal

Netflix混沌工程团队前经理

Verica.io首席执行官兼联合创始人