上周咱们分享了故障管理中,应该如何对待故障,怎样作好故障定级和定责方面的管理工做。今天我就和你分享当故障真正发生后,咱们在故障通报和故障复盘方面的实践经验。服务器
当故障真实发生后,带来的影响不只仅是技术层面的,更多的是业务层面的,好比用户和商家的批量投诉,交易量下跌,广告资损等等。而这些影响又会产生巨大的外部压力,并传递到技术团队,这时若是没有很好的故障应对机制,技术团队就很容易陷入慌乱,不知所措。网络
咱们可否有效应对这种突发且高压的情况,我以为有两个方面十分关键。架构
这也是咱们在故障应急状态下必定要坚守的第一原则:优先恢复业务,而不是定位问题。这就须要咱们事先有充足的预案准备以及故障模拟演练,这就跟咱们前面介绍的各类稳定性保障措施相关,经过稳定性平台的建设,与咱们可以预见到的,以及咱们经历过的故障场景相结合,当发生故障时可以第一时间执行对应的恢复预案。工具
同时,预案的执行不能仅仅在故障发生时才执行,而是应该把故障模拟和恢复演练放在平时。我在团队中常常传递的一个理念就是:凡是没有演练过的预案,都是耍流氓。也就是若是咱们在平常系统稳定的状态下都不敢执行预案,或者执行了没效果,那真到了故障发生后,在更为复杂的情况下,预案100%也是不敢作的,由于这种异常状态下,咱们还要考虑执行了预案是否会致使次生故障。学习
关于故障模拟,能够分为不一样层面来梳理,好比:开发
关于故障模拟,我再次向你推荐Netflix的Chaos Engineering,介绍得很是全面。同步
故障发生后的排障和恢复操做,每每须要多个技术团队协做完成,这时就须要有必定的应急机制,来确保相关人员可以快速响应和高效协做。同时,由于对业务形成的影响致使业务团队会承受不少外部压力,这时也须要有统一的口径对外反馈,好比大体缘由(对外不用详细),影响面以及预估恢复时长等等,从而确保信息的透明,避免各类不着边际的猜想对公司信誉形成的影响。团队协作
这时,咱们前面介绍到的技术支持这个角色就起到了很是关键的做用。对内,要有效组织技术团队的集中和协做;对外,负责对接业务部门同步信息,同时屏蔽各方对技术团队和故障处理人员的干扰。监控
出现一个严重故障后,技术支持一般要作以下几个关键事项。配置
因此,总体总结下来,故障应急过程就是:功夫要下在平时,注意建设各类工具和平台,同时要尽量地考虑和模拟各类故障场景。这就像一支军队在平时必定要作各类军事演习同样,而后就是临场发挥。当故障真正出现时,要有完善的应急机制,立刻可以有效运转起来,而不是慌乱无措。
上面介绍了故障应急,那接下来咱们再看故障管理的下一个阶段,也就是故障发生以后的复盘。
首先,咱们必定要先搞清楚复盘的目的。复盘的目的是为了从故障中学习,找到咱们技术和管理上的不足,而后不断改进。虽然咱们不肯意故障发生,可是从故障中学习,反而是提高团队和员工能力的最佳手段,因此咱们必定要辩证地看待故障这件事情。
同时,切忌将复盘过程和目的搞成追究责任或实施惩罚,这对于团队氛围和员工积极性的打击是很是大的。这一点在前面的内容中已经详细介绍过,这里就再也不重复了。
在复盘过程当中,技术支持仍然要起到关键做用。
复盘会议中,一般会有哪些关键环节呢?
除了例行的故障应急和故障复盘,咱们还会按期对一个时期内的故障案例进行总结。好比按照一个季度、半年和整年的周期,这样能够更容易地发现一些共性问题,以便于研发团队在稳定性建设方面的规划。
举个例子,2017年年末,咱们总体总结了整年的故障案例,对P0~P2严重级别的故障进行分类汇总,就发现整年第三方缘由的故障,以及数据类的故障占了很大比例。
咱们再往细节分析,发现第三方缘由的故障,多数是机房IDC的电力、网络切换,单台服务器硬件故障致使的。这些在单次故障复盘时,很容易归因于第三方,可是从整年来看,咱们认为根因上,仍是咱们的系统健壮性不够,在限流降级以及平常的故障模拟演练上,还有很大的提高空间。因此,咱们就拉上研发团队的主管和骨干员工,从新看这些故障,从新制定出稳定性提高的改进措施。
同时,在故障定级定责方面,由第三方缘由致使的故障,后续再也不做为故障根因,而只做为触发因素。因此,在故障复盘时必定要制定出咱们自身须要改进的措施。
针对数据类故障,咱们总结后发现大多集中在“有状态业务”发布过程当中。代码和配置发布能够走发布系统,有完善的流程支持,但数据的变动却更多地依赖人工操做,且流程和周边部件的配合上也不成熟。因此,咱们就明确下来,要加大对有状态业务的发布和数据变动工具的支持,将经验固化下来,而不是靠人。
上述这些经验,同时又能够推广到整个研发团队,在不断总结的过程当中,整个系统的稳定性不断提高,技术架构也不断完善。
到这里,咱们整个故障管理的内容就介绍完了。
总结一下,咱们首先要对故障有一个正确和理性的认识,既不能听任无论,也不要谈之色变;同时咱们也须要科学的管理方式,跟业务结合,制定出对应的故障等级和定级定责制度。
其次,结合咱们前面介绍的稳定性保障体系,在平常要作好各种预案和模拟演练,当故障真实发生时,可以作到冷静处理和高效地组织协调。
最后,在故障复盘中总结出咱们的不足,而后不断地改进。
关于故障管理的内容,你还有哪些问题想和我交流,欢迎你留言讨论。