书籍作者:Ali·Basiri | ISBN:9787121363511 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:4348 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
在一个由很多微服务组成的分布式系统中,我们永远难以全面掌握发生什么事件会导致系统局部不可用,甚至全面崩溃。但我们却可以尽可能地在这些不可用的情况发生之前找出系统中的脆弱点。本书介绍了Netflix 的工程师团队是如何根据多年实践经验主动发现系统中脆弱点的一整套方法。这套方法现在已经逐渐演变成计算机科学的一门新兴学科,即“混沌工程”。通过一系列可控的实验和执行实验的原则,混沌工程将揭示出分布式系统中随时发生的各类事件是如何逐步导致系统整体不可用的。
本书既适合研发、测试人员用来了解如何构建健壮的系统,也适合软件架构师用来了解设计创建高可用微服务体系的前沿方法,同时更适合在大型互联网或技术组织中专门负责系统稳定性的工程团队阅读。
Ali Basiri是Netflix混沌工程团队的创始人,他致力于通过混沌自动化平台(ChAP)、混沌猴子和FIT等一系列弹性计划确保Netflix的可用性。 在此之前,Ali负责Netflix的主动区域故障转移功能,并开发了Citrus——一种使用生产流量的分布式负载测试工具。 在Netflix之前,Ali是PagerDuty的di一位员工,致力于PagerDuty的弹性工作,以保证至少一次通知交付。
√混沌工程是对系统的容错设计进行验证,保障系统稳定性的新方法!
√本书系统地介绍了混沌工程的演进及实践原则,帮助读者理解其设计思想;
√来自混沌工程概念的提出者与实践者Netflix工程师的官方一手资料;
√国内混沌工程的早期实践者与推动者中亭作序审校;
√本书对英文原版中一些较难理解的词句进行了优化,并对专业术语等做了详细注解。
序
要设计良好的系统需要考虑很多因素,比如可靠性、安全性、可扩展性、可定制化、可伸缩性、可维护性、用户体验等。为了更高效地支撑业务发展,越来越多的企业选择基于云服务或云原生理念来构建平台。采用新思路和新技术必然会带来系统架构和组织结构的变革,引入风险因素。如何通过实验证明生产环境下的分布式系统在面对失控条件的时候依然具备较强的“可观测性”和故障恢复能力呢?这就是混沌工程要解决的问题。
为了提升研发效率、支撑未来业务发展,2008 年淘宝完成了服务化拆分和改造。伴随着应用数量的激增,多起因为不合理依赖导致的可用性故障发生了。作为保障高可用的技术团队,2011 年我们开始尝试使用故障注入的方法来验证和治理系统的依赖问题,并在故障模拟实现、自动化验证、环境隔离、流量制造等方面进行了多次方案升级,沉淀了一套自动化的依赖治理方案。2016 年,为了更真实地验证系统的容错设计和组织响应问题的能力,我们开始尝试在生产环境中进行故障场景演练。通过几年的发展,线上故障演练已经覆盖了大部分核心业务,提前发现了很多系统、工具、流程方面的问题。
也许很多人听说过Netflix 的Chaos Monkey,但是大多数人对于混沌工程的概念还是比较模糊的。随着2017 年本书的英文版面世,这种状况得到了改观。书中凝聚了第一批混沌工程师的智慧和经验,从建立稳定状态的假设、用多样的现实世界事件做验证、在生产环境中进行实验、自动化实验以持续运行、最小化爆炸半径五个角度对混沌工程进行抽象和概括,详细地阐述了混沌工程的演进和实践原则。书中的每条原则都既传递了一种思想,也代表着一套工具产品的设计思路。结合阿里巴巴在依赖治理、故障演练方面的实践积累,更能体会到每条原则的精妙。
周洋(花名:中亭)
阿里巴巴高可用架构团队高级技术专家
开源项目ChaosBlade 发起人
译者序
软件系统自身复杂度的激增、开发者在引入复杂性的同时对风险的低估和忽视,是系统可用性面临的两大挑战。
为了应对这两大挑战,Netflix 选择了一条不同寻常的路。从混乱猴子开始,Netflix 为应对不确定性的领域带来了一种全新的思维方式——主动出击。这种主动出击的思维方式衍生出的一套实践方法,被称为混沌工程(Chaos Engineering),它旨在从根本上改变开发者应对软件缺陷和故障的思维方式。在此之前,我们期望通过一系列的测试验证手段,尽最大的可能确保在线上运行的系统没有缺陷和故障。而混沌工程的理念认为这既不现实,也不符合系统自然发展的规律。混沌工程提倡我们首先要正面接受系统一定会存在缺陷,并且一定会时不时地发生故障的事实;然后,要求我们通过一系列实验找出可能发生问题的风险点,进而在不断加固系统的同时,促使开发者在开发软件时必须选择将防御性内建在系统中。
混沌工程的理论,建构于塔勒布在《反脆弱》一书中所阐述的思想之上,即系统如何在不确定性中获益。在接受“系统越复杂,越脆弱”的事实之后,让系统在每一次失败中获益,然后不断进化,这是混沌工程的核心思想。在实践中,混沌工程提倡用一系列实验来真实地验证系统在各类故障场景下的表现,通过频繁地进行大量实验,既使得系统本身的反脆弱性持续增强,也让开发者对系统越来越有信心。这个信心同时也是系统高速迭代,占尽市场先机的一个前提因素。
混沌工程目前还是一个新兴的学科,它为软件工程行业带来了全新的思维方式。相信越来越多的实践和工具,会一步步释放这个学科的能量,吸引更多的实践者。团队或组织可以在任何时间点引入混沌工程的理念,这是一门实践性的学科,所以现在就和我们一起,开启你的混沌之旅吧!
第一部分 混沌工程介绍 ...................................... 21
第1 章 为什么需要混沌工程 .................................................. 25
混沌工程和测试的区别 .............................................. 25
混沌工程绝不是Netflix 的专属 ................................. 28
实施混沌工程的前提条件 .......................................... 31
第2 章 管理复杂性 .................................................................. 35
理解复杂系统 .............................................................. 37
系统复杂性的例子 ...................................................... 41
从例子中学到了什么 .................................................. 45
第二部分 混沌工程原则 ...................................... 49
第3 章 建立稳定状态的假设 .................................................. 55
如何描述稳定状态 ...................................................... 60
建立假设 ...................................................................... 61
第4 章 用多样的现实世界事件做验证 .................................. 65
第5 章 在生产环境中进行实验 .............................................. 73
状态和服务 .................................................................. 74
生产环境中的输入 ...................................................... 76
第三方系统 .................................................................. 77
生产环境变更 .............................................................. 79
外部有效性 .................................................................. 79
不愿意实践混沌工程的说辞 ...................................... 80
离生产环境越近越好 .................................................. 82
第6 章 自动化实验以持续运行 .............................................. 84
自动执行实验 .............................................................. 84
自动创建实验 .............................................................. 89
第7 章 最小化爆炸半径 .......................................................... 91
第三部分 混沌工程实践 ...................................... 97
第8 章 设计实验 .................................................................... 100
选定假设 .................................................................... 101
设定实验的范围 ........................................................ 101
识别出要监控的指标 ................................................ 102
在组织内沟通到位 .................................................... 103
执行实验 .................................................................... 104
分析实验结果 ............................................................ 105
扩大实验范围 ............................................................ 105
自动化实验 ................................................................ 106
第9 章 混沌工程成熟度模型 ................................................ 107
熟练度 ........................................................................ 108
应用度 ........................................................................ 110
绘制成熟度模型图 .................................................... 112
第10 章 结论 .......................................................................... 114
一些资源 .................................................................... 114