为什么要进行故障演练?
伴随着海量请求、节假日峰值流量和与日俱增的系统复杂度一起出现的,很有可能是预料之中以及意料之外的各种故障。在很多情况下,由于事故处理预案的缺失或者预案本身的不可靠,以及开发人员故障处理经验的缺失,造成在各种报警之中自乱了阵脚,从而贻误了最佳战机。特别是一些平时线上没出现过的异常故障,一旦突然出现,往往措手不及。
系统是否足够健壮?是否有足够的能力应对故障的发生?当面临故障时会出现什么行为?我们并不希望真正线上出现故障时才去验证这些问题,这样风险太大,成本太大。所以希望在线上环境隔离真实流量的情况下,提前模拟产生各种任何可能发生的故障,来观察系统的反应,验证预期策略。
总结一下,故障演练主要有以下几个目标:
- 确保系统按我们预想的方式应对故障
- 寻找系统中未预料到的弱点
- 寻找其他提高系统鲁棒性的方式来避免事故实际发生
理想情况是达到如下流程化: 例行化故障演练、找出系统风险点、优化业务系统、产出可行有效的故障处理预案
什么是故障演练?
故障演练是应用高可用能力测评的核心,一次完整的故障演练由演练的对象、对象发生的具体故障、应用的预期故障应对表现、对应用表现的实际观察和判断几部分组成。