https://www.infoq.cn/theme/13
https://github.com/dastergon/awesome-chaos-engineering
https://principlesofchaos.org/
https://www.e-learn.cn/topic/3144969
https://www.infoq.cn/article/jjp0c2bR4*Ulld0wb88r
2008 年 Netflix 开始从数据中心迁移到云上,之后就开始尝试在生产环境开展一些系统弹性的测试。过了一段时间这个实践过程才被称之为混沌工程。最早被大家熟知的是“混乱猴子”(Chaos Monkey),以其在生产环境中随机关闭服务节点而“恶名远扬”。进化成为“混乱金刚”(Chaos Kong)之后,这些之前获得的小收益被无限扩大。规模的扩大得益于一个叫做“故障注入测试”(Fault Injection Test,FIT)的工具。我们随后确立了混沌工程的若干原则,用以将这个实践规范的学科化 ,同时我们推出了混沌工程自动化平台,能够在微服务体系架构上,24*7 不间断地自动运行混沌工程实验。
在开发这些工具和实践的过程中,我们逐渐意识到,混沌工程并非是简单的制造服务中断等故障。当然,尝试破坏系统和服务很简单,但并不是全都可以有建设性、高效地发现问题。混沌工程的意义在于,能让复杂系统中根深蒂固的混乱和不稳定性浮出表面,让我们可以更全面地理解这些系统性固有现象,从而在分布式系统中实现更好的工程设计,不断提高系统弹性
https://www.infoq.cn/article/AsN34J2T9QDXB0s-t9JN
建立稳定状态的假设;
多样化现实世界事件;
在生产环境运行实验;
持续自动化运行实验;
最小化“爆炸半径”
https://www.infoq.cn/article/M3EktXxYGRYYm*t5vKga
你也可以在 Netflix 的官方博客 https://medium.com/netflix-techblog 找到更多关于混沌工程的信息。当然,还有很多其他的组织在实践混沌工程,例如:
Fault Injection in Production: Making the Case for Resiliency Testing
Inside Azure Search: Chaos Engineering
Organized Chaos With F#
Chaos Engineering 101
Meet Kripa Krishnan, Google’s Queen of Chaos
Facebook Turned Off Entire Data Center to Test Resiliency
On Designing And Deploying Internet-Scale Services
另外,还有很多为不同场景开发的开源工具:
Simoorg
Linkedin 开发的故障注入工具。它非常易于扩展,并且很多关键组件都是可插拔的。
Pumba
基于 Docker 的混沌工程测试工具以及网络模拟工具。
Chaos Lemur
可以本地部署的随机关闭 BOSH 虚拟机的工具。
Chaos Lambda
随机关闭 AWS ASG 节点的工具。
Blockade
基于 Docker,可以测试网络故障和网络分区的工具。
Chaos-http-proxy
可以向 HTTP 请求注入故障的代理服务器。
Monkey-ops
Monkey-Ops 用 Go 实现,可以再 OpenShift V3.X 上部署并且可以在其中生成混沌实验。Monkey-Ops 可以随机停止 OpenShift 组件,如 Pods 或者 DeploymentConfigs。
Chaos Dingo
Chaos Dingo 目前支持在 Azure 相关服务上进行实验。
Tugbot
Docker 生产环境测试工具。
也有一些书籍讲到关于混沌工程的一些主题:
Drift Into Failure by Sidney Dekker (2011)
Dekker 的理论讲的是,在一个组织内部,事故的发生都是因为各系统随着时间慢慢滑向一个不安全的状态,而不是某个单点突发的问题造成的。你可以把混沌工程想象成专门用来对抗这种滑动过程的方法。
To Engineer Is Human: The Role of Failure in Successful Design by Henry Petroski (1992)
Petroski 描述了他们那里的工程师是如何从过去的失败中汲取教训来进步的,而不是从过去的成功中找经验。混沌工程正是一种既能发现系统中的问题点,又能避免大规模影响的方法论。
Searching for Safety by Aaron Wildavsky (1988)
Wildavksy 的主张是,为了提高整体安全性,所有风险必须要被管理好。尤其是采用不断试错的方法,长期来说会比尝试完全避免事故发生,要获得更好的结果。混沌工程也是同样的通过在生产环境进行实验来拥抱风险,以期获得系统更大的弹性的方法。