专业书籍精读 · SRE · 第 15 章

事后复盘:不追人,追那条让人踩空的路

Site Reliability Engineering · Ch 15 · John Lunney & Sue Lueder · Google · 2016

EN →

这一章讲什么?

网站崩了,两个小时后修好了。然后呢?大多数公司的答案是「然后就没有然后了」——大家松一口气,各回各的活;三个月后同一个毛病原样再来。Google 这本书的第 15 章讲的就是那个「然后」该怎么做:把这次事故写下来、讲清楚、变成一串必须做完的改动。这份文档叫复盘

先打个比方

民航业有个老规矩:空难之后调查飞机,不调查飞行员。不是因为飞行员没犯错——很多时候他确实按错了钮。而是因为调查组真正想知道的是:那个钮为什么长得跟旁边那个一模一样?为什么手册写的和座舱里显示的不一致?为什么那个错误的动作,在他眼里看起来是对的?找出这些,下一个飞行员就不会再按错。如果结论是「飞行员失职」,钮还在那儿,下一个人照样按。

整章最值钱的一句就是这个道理的技术版:你没法「修好」人,但你可以修系统和流程

旧世界为什么难

难在一件很人性的事:一旦开始追人,大家就不说了

你要的信息偏偏只在当事人脑子里——他当时看到了什么、为什么那一步在当时是合理的。没有任何监控能替他说出来。可只要他知道说出来会被记一笔,他就只讲那些瞒不住的部分;下一次,小毛病他干脆不报了。于是你的事故记录本上全是大事故,看起来风平浪静,其实小问题在暗处一直攒着

这章的核心点子

先把「谁干的」这个问题从会议室里删掉。前提是一句假设:参与这件事的每个人,都是本着好意、用他当时手上的信息做了他认为对的事。于是问题从「谁做错了」换成「为什么当时那个选择看起来是对的」。这不是对人温柔,是一门交易:你放弃追究一个名字,换来那部分只有他知道的信息。

什么情况必须写,要提前说好:用户感觉到的故障超过多久、丢了任何数据、值班的人半夜爬起来手工干预过、修了太久、以及——监控没报出来、是用户先发现的。为什么要提前?因为等出了事再讨论「这算不算大事」,答案会随当天谁在场、谁不高兴而变。

产出不是文档,是一串待办。复盘写得再动人,如果没有几条「改哪个系统、谁改、什么时候改完」,它就只是一篇作文。而且写完必须有人认真看——书里的原话很不客气:一份没被评审过的复盘,跟从没存在过一样。

老复盘是最好的教材。Google 的做法有点好玩:把几个月甚至几年前的旧复盘翻出来,叫上当年的当事人、旁观者和新人一起读;还有一种叫「灾难轮盘」的排练——挑一份旧复盘,让新人扮演当时的角色,把那场事故从头演一遍。

一句话记住

事故的学费已经交了,复盘是唯一能把它换成东西的动作:不追人、只追「为什么当时那么做是合理的」,因为你要的信息只在当事人嘴里;提前说好什么情况必须写,写完必须有人看,而真正的产出是一串被跟到关掉的改动。诚实说一句代价:无指责很容易做成表演——嘴上不追责,年底考评照样记着这一笔;只要人能闻出这个味道,整套东西就白搭。

想进到完整流程、对比表和真实公司的公开复盘? → 切到精读版