混沌工程是近十年出现的,然而我们大部分人包括我自己都没有接触或者听说过,对我自己小白做个知识普及。
混沌工程定义
Chaos Engineering is the discipline of experimenting on a distributed system in order to build confidence in the system's capability to withstand turbulent conditions in production.
我们注意到有两个关键短语
- discipline of experimenting
- on distirbuted system
混沌工程历史
参考 混沌工程 | 亚马逊AWS官方博客 (amazon.com)
2010年 Netflix 内部开发了 AWS 云上随机终止 EC2 实例的混沌实验工具:Chaos Monkey
2011年 Netflix release了其猴子军团工具集:Simian Army
2012年 Netflix 向社区开源由 Java 构建 Simian Army,其中包括 Chaos Monkey V1 版本
2014年 Netflix 开始正式公开招聘 Chaos Engineer
2014年 Netflix 提出了故障注入测试(FIT),利用微服务架构的特性,控制混沌实验的爆炸半径
2015年 Netflix release了 Chaos Kong ,模拟AWS区域(Region)中断的场景
2015年 Netflix 和社区正式提出混沌工程的指导思想 – Principles of Chaos Engineering
2016年 Kolton Andrus(前 Netflix 和 Amazon Chaos Engineer )创立了 Gremlin ,正式将混沌实验工具商用化
2017年 Netflix 开源 Chaos Monkey 由 Golang 重构的 V2 版本,必须集成 CD 工具 Spinnaker(持续发布平台)来使用
2017年 Netflix release了 ChAP (Chaos Automation Platform, 混沌实验自动平台),可视为应用故障注入测试(FIT)的加强版
2017年 由Netflix 前混沌工程师撰写的新书“混沌工程”在网上出版
2017年 Russell Miles 创立了 ChaosIQ 公司,并开源了 chaostoolkit 混沌实验框架
混沌工程五原则
- 建立稳定状态的假设
- 多样化实现世界事件
- 在生产环境进行实验
- 持续自动化进行实验
- 最小化“爆炸半径”
混沌工程度量
成熟度 | 演练程度 | 故障自身的等级 | 问题频率 | 重叠程度 | 时间范围 | 故障持续时间 | 故障出发通知 | 故障恢复能力 | |
---|---|---|---|---|---|---|---|---|---|
初步 | |||||||||
入门 | |||||||||
常规 | |||||||||
熟练 | |||||||||
大师 |
如上为混沌工程某大厂的度量表格
混沌工程相关产品
chaosblade 阿里巴巴
chaostollkit Netflix
Litmus Cloud native chaos engineering - Enhancing Kubernetes application resiliency | Cloud Native Computing Foundation (cncf.io)
小结
混沌工程是分布式系统提升稳定性的大杀器,但是只在极少数大厂有用到,先了解,说不定有一天可能用到。