要解决的问题
Netflix在AWS上运行其流媒体服务,在那里实例故障很常见,而中断曾重创整个行业;与其被动等待意外,工程团队决定主动给自己制造惊喜。
创意是什么
故意破坏生产环境:混乱猴子随机关闭AWS上的真实实例,迫使工程师构建服务,使其在用户无感的情况下存活。
如何实现
一个小工具从每个集群中随机挑选一个实例,并在工作日的营业时间内,毫无预警地将其关闭——工程师们在一旁观察服务如何反应。Netflix在2012年7月开源了混乱猴子,随后又将珍奇猴子(Janitor Monkey)和安全猴子(Security Monkey)加入“猩猩军团”;其核心原则是:“抵御重大意外故障的最佳方法就是经常失败。”
产生的效果
混乱猴子迫使Netflix的架构能够容忍实例丢失而不影响用户,并将故障演练变成日常;开源后,TechCrunch和Wired进行了报道,Stack Exchange的Jeff Atwood称赞这一思路解决了他的宕机问题,这一实践逐渐发展为混沌工程学科。
背景
Netflix在AWS上运行其流媒体服务,而在云端,实例会失败——主机宕机、网络波动、负载均衡器出错。与其等待宕机来暴露弱点,工程团队构建了混乱猴子,一种在营业时间随机禁用生产实例的软件,同时工程师们在旁观察。
这个名字来源于“在你的数据中心里放出一只持武器的野猴,随机射击实例并啃咬线缆——而与此同时,我们继续服务客户而不中断。”重点不在于工具本身,而在于心态的改变:如果你的系统必须经受随机的日常攻击,你就会构建自动恢复,而不是期望万事顺利。
2012年7月,Netflix开源了混乱猴子,这一想法迅速传播。TechCrunch和Wired的报道让“经常失败”成为著名的工程格言;Stack Exchange的Jeff Atwood表示,只有在“混乱猴子选中他们”之后,他的团队才解决了宕机问题。这一实践后来被正式化为混沌工程——在生产系统中进行实验,以建立系统应对混乱情况的信心。
为什么有效
工作日随机、无人值守的失败将罕见的可怕宕机转变为有工程师待命的常规演习。
经常失败迫使系统具备自动恢复机制,使得凌晨3点的故障不再是危机。
开源让这一想法得以传播——其他公司采纳了该实践,使其发展成一门学科。
名字让人过目不忘,这也是实践迅速普及的原因。
可以借鉴什么
不要等待你无法预测的宕机:在白天诱导小故障,并有工程师在旁观察,让系统和团队在凌晨3点的灾难来临前学会承受能力。
后续
Netflix持续扩展这一理念:延迟猴子、医生猴子、针对整个可用区的混沌金刚(Chaos Kong),以及后来的混沌自动化平台,并在2015年成立了专门的混沌工程团队。原始的“猩猩军团”仓库在2021年被退役,取而代之的是独立工具,但这一实践已超越Netflix——混沌工程成为了一种行业纪律,拥有书籍、会议、商业工具以及Capital One等采用者。
从这里,追溯依据
参考来源
- Netflix/SimianArmy — Tools for keeping your cloud operating in top form Netflix (GitHub) · github.com
- Netflix Open Sources Chaos Monkey — A Tool Designed To Cause Failure So You Can Make A Stronger Cloud TechCrunch · beta.techcrunch.com ·
- Netflix Abuses Amazon With Monkeys. Now You Can Too Wired · wired.com ·
- What is Chaos Monkey? Chaos engineering explained InfoWorld · infoworld.com ·