课程简介
伴随市场环境、客户需求深刻变化,由于云带来敏捷性和易用性,大规模分布式系统的快速发展,正在彻底改变整个软件工程。敏捷开发和DevOps实践,加速了新产品研制和上线发布,而困扰我们的,却是投入生产的信心在逐步下降:即使分布式系统中的所有单个服务都正常运行, 这些服务之间的交互也会导致不可预知的结果。
为了上述新挑战,建立对系统抵御生产环境中失控条件的能力以及信心,比如超时毒化,重试风暴,网络抖动,失败硬着陆,限流失效,扩展失控等等严重的可靠性问题。借助微服务架构,我们在这个新的时代,需要通过限流、容错、降级、过载保护、舱壁隔离和生命周期管理等等手段进行更完整的容错性保护。此外,还出现了一个新的名词:混沌工程,它不会取代已有的容错性设计和测试方法,而是针对现有测试方法进行了补充和创新。近两年来,混沌工程在系统稳定性/可靠性领域的价值,逐步引起质量人员的重视。
2018年以来,混沌工程在国内受到越来越大的重视,特别是2020年CNCF沙箱项目中开始接受国人贡献的开源项目,2022年出现在CNCF 孵化项目中。混沌工程的诞生与重视,源于越来越多的用户开始采用分布式系统,开发的灵活性和部署速度的大幅提升,加速了系统的复杂性。我们必须在生产暴露给用户之前,主动发现这些隐藏的系统脆弱点。毋庸置疑,混沌工程已经在世界上规模最大的业务系统上,证明了自身的价值,彻底改变了软件设计和运行的模式。相较于其他方法解决了速度和灵活性,混沌工程关注系统稳定性,建立对系统抵御生产失控的能力和信心。
本课程将从混沌工程的原理、可靠性治理方法入手,结合实例深入剖析混沌实验方法,比较常见实验手段的优缺点、适用的场景以及典型模式。教给学员如何设计和执行受控的混沌工程实验,从第一个混沌实验示例开始,覆盖如何在系统调用、Docker、JVM、API、数据库和Kubernetes中进行故障注入,以及一些特别用例,比如:如何将混沌工程应用于前端代码的方法。最后将讨论成为混沌工程师所需要的心态,可能存在的难处和技能进步的方向。
培训特色
以史为鉴,吃透可靠性治理和混沌工程的发展脉络和背景
围绕最佳实践和现实案例,剖析混沌工程的原理和实现手段
从混沌实验示例入手,深入探讨如何进行故障注入,学员亲自动手相结合
课程完整性,可靠性治理、混沌工程和故障注入实验缺一不可
目标收益
了解常见的可靠性治理需求
掌握常见的可靠性治理方法
掌握混沌工程的原理和实现手段
掌握全生命周期的混沌实验方法
掌握常见的故障注入测试
掌握常见的基于可观测性的故障分析法
课程大纲
第一天
1. 分布式软件设计面临的新挑战
a. 分布式软件系统的复杂性
b. 敏捷开发、DevOps和微服务带来的影响
c. 常见的软件可靠性问题和困境
i. 超时毒化
ii. 重试风暴
iii. 网络抖动
iv. 失败硬着陆
v. 限流失效
vi. 扩展失控
2. 混沌工程的基本概念和原则
a. 混沌工程的来历
b. 混沌工程的基本概念
c. 混沌工程与软件可靠性
d. 混沌工程的理解误区
e. 混沌工程的设计原则
3. 混沌实验的全生命周期介绍
a. 确保可观测性
b. 定义稳态
c. 形成假设
d. 运行实验
e. 结果观测、分析和改进
f. 第一个混沌实验的示例分析
4. 混沌实验的可观测性要求
a. 度量指标
b. 拓扑视图
c. 调用追踪
d. 性能分析
5. 混沌实验实战与故障注入(上)
a. 构建示例实验应用
b. 部署可观测性
c. 系统调用的注入场景
d. JVM的注入场景
e. 网络延迟的注入场景
f. 动手实验
g. 系统观测与结果分析
第二天
6. 混沌实验实战与故障注入(下)
a. 数据库的注入场景
b. 容器的注入场景
c. K8s的注入场景
d. 动手实验
e. 系统观测与结果分析
f. 实验总结与讨论
7. 混沌实验的自动化与编排框架动化
a. 混沌实验的自动化要求
b. 编排框架的设计原则
c. 知名编排框架的比较与适用场景
i. ChaosMesh
ii. Chaosblade
iii. Litmus
d. 示例分析
8. 混沌工程高阶话题
a. 韧性架构设计原则
b. 混沌实验生产化的方法
c. 爆炸半径的细粒度管控
d. 实验场景爆炸的解法
e. 新实验场景的探索方向
f. 韧性分数实践
g. 混沌工程演进的总结和未来展望