1、AWS云上混沌工程实践之对照实验设计和实施AWS 资深云架构咨询顾问目录 混沌工程发展历程 混沌工程实验设计方法混沌工程实验目标混沌工程观测指标设计混沌工程故障注入场景混沌工程实验环境考量混沌工程实验工具选型 混沌工程实验示例-无服务器架构 总结混沌工程发展历程天花 天花是一种由天花病毒引起之人类传染病 天花主要透过空气传播 最早的天花在公元前3世纪埃及木乃伊中发现(已死去逾三千年的法老拉美西斯五世)十八世纪的欧洲,估计每年有40万人死亡接种与疫苗最早出现的天花预防法为接种,成功接种的人可建立持久的免疫力,因患上天花而死的机会亦会降低;若失败,接种者会染上天花,并可能将之散播。居住在英格兰郊区
2、的爱德华詹纳医生发现了牛痘(一种对人类较为温和的痘病毒)能用以预防天花。世界卫生组织于1980年正式宣布扑灭天花,使之成为首个于世上绝迹的人类传染病。https:/en.wikipedia.org/wiki/Edward_Jenner疫苗与混沌工程 受控实验,准备故障注入方式(疫苗)将故障(抗原)注入(人体)系统 了解(人体)系统抵御故障(抗原)的行为(产生抗体)真实故障(病菌)发生时,已建立抵御故障(病菌)的能力和信心(消灭)过去当前未来过去当前未来?灾备技术混沌工程韧性系统灾备技术1978 Sungard 至 Mainframe 系列Recovery Point Objective即恢复时
3、间目标,主要指当发生灾难或紧急事件时,业务系统所能容忍的停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期。Recovery Time Objective即数据恢复点目标,主要指当发生灾难或紧急事件时,业务系统所能容忍的数据丢失量。RPORTO混沌工程2010年 Kolton Andrus 在 Amazon 内部开发了可用性测试工具 Gremlin2010年 Netflix 内部开发了 AWS 云上随机终止 EC2 实例的混沌实验工具 Chaos Monkey2011年 Netflix 释出了其猴子军团工具集 Simian Army2012年 Netflix 向社区
4、开源由 Java 构建 Simian Army,其中包括 Chaos Monkey V1 版本2014年 Netflix 开始正式公开招聘 Chaos Engineer2014年 Netflix 提出了故障注入测试 FIT,利用微服务架构的特性,控制混沌实验的爆炸半径2015年 Netflix 释出 Chaos Kong,模拟AWS区域中断的场景2015年 Netflix 和社区正式提出混沌工程的指导思想 Principles of Chaos Engineering2016年 Kolton Andrus 创立了 Gremlin,正式将混沌实验工具商用化2017年 Netflix 开源 Cha
5、os Monkey 由 Golang 重构的 V2 版本,集成 CD 工具 Spinnaker 2017年 Netflix 释出 ChAP 混沌实验自动平台,可视为应用故障注入测试 FIT 的加强版2017年 由 Netflix 前混沌工程师撰写的新书“混沌工程”在网上出版2017年 Russell Miles 创立了 ChaosIQ 公司,并开源了 chaostoolkit 混沌实验框架混沌工程实验的设计方法混沌工程实验目标韧性架构冗余性扩展性不可变基础设施无状态应用基础设施即代码避免级联故障转移切换重试退避超时机制幂等操作服务降级拒绝服务服务熔断实验需求和对象(迭代)实验可行性评估观测指标
6、设计实验场景环境设计实验工具平台框架选型实验计划和沟通实验执行指标搜集环境清理与恢复实验结果分析问题追踪流水线集成混沌工程实践混沌工程可行性评估模型混沌工程实验成熟度等级成熟度等级1级2级3级4级5级架构抵御故障的能力无抵御故障的能力一定的冗余性冗余且可扩展已使用可避免级联故障的技术已实现韧性架构实验指标设计无系统指标监控实验结果只反映系统状态指标实验结果反映应用的健康状况指标实验结果反映聚合的业务指标可在实验组和控制组之间比较业务指标的差异实验环境选择只敢在开发和测试环境中运行实验可在预生产环境中运行实验未在生产环境中,用复制的生产流量来运行实验在生产环境中运行实验包括生产在内的任意环境都可