复盘的目的:免疫,不是追责
故障复盘的两种形态:追责式复盘(「谁干的」——当事人防御、信息隐瞒、下次同样的事故换个姿势再来——「追责的毒性」:恐惧让人隐瞒信息,复盘的原料就是信息——隐瞒信息的复盘必然低质;免疫式复盘(blameless,无责复盘——「复盘的目标」:找到「系统为什么允许这个故障发生」——「系统 vs 个人」的归因(任何故障背后都有「允许它发生的系统缺陷」——「操作失误」的背后是「流程为什么允许单点失误影响全局」——「归因到系统」是复盘的第一原则。
Blameless 的核心机制:「无责的承诺」(复盘的组织承诺——复盘会上说的话不用于绩效——「承诺的严肃性」(承诺要可信(有过复盘内容被用于追责的组织——承诺作废——「信任的重建」需要时间——「管理层的自我克制」是 blameless 的前提——「CEO 的免责表态」的公开化——blameless 是一种组织文化,不是一张会议纪要的标题。
复盘的流程:从时间线到行动计划
复盘文档的结构(Google SRE 的 postmortem 模板):结构一:摘要(影响范围、时长、根因的一句话概括——「摘要给管理层」(一页纸读完——「影响的量化」(受影响用户数、损失金额——「量化的诚实」(不缩小影响——诚实的影响评估是复盘可信度的起点。
结构二:时间线(timeline)——「时间线的重建」:故障从「诱因」到「发现」到「处置」到「恢复」的每一步——「时间线的要素」:每个节点的时间、动作、依据——「检测延迟」的分析(故障发生到被发现的时间(「检测延迟」的缩短是改进的方向——「发现的方式」(监控告警?用户反馈?——「用户先发现」是监控失败的标志——监控的盲区——「时间线的 granularity」(精确到分钟——从监控与日志重建——「时间线」是复盘的事实基础——时间线的争论(各说各话——「数据的仲裁」(以日志与监控为准——「时间的对齐」(多个系统的时间戳——NTP 的重要性。
结构三:根因分析——「五问法(5 Whys)」(连问五个为什么——「五问的示例」:服务宕了→为什么(内存溢出)→为什么(缓存堆积)→为什么(清理任务失败)→为什么(清理任务的依赖服务超时)→为什么(依赖服务没有超时配置——「根因是超时配置」而非「清理任务」——「五问的收敛点」——「问到位」的标准(问到「系统性的改进点」——「谁忘了配」是追责、「为什么允许没配」是系统——「多根因」的承认(复杂故障的多条根因链——「根因的优先级」(哪些先修。结构四:行动计划——「行动项的质量标准」:「行动项的 SMART 化」(具体的动作、负责人、期限——「「加监控」不是行动项(太模糊——「给 XX 服务的缓存清理任务加 1s 超时与告警,负责人张三,本周五前」——「行动项的分级」(立即修(本周)、计划修(本月)、「行动项的跟踪」(行动项的完成率跟踪——「行动项的失效」(复盘热热闹闹、行动项石沉大海——「行动项的完成率」是复盘有效性的硬指标——「连续两季度行动项完成率 < 70%」——复盘机制需要检修。
复盘的组织学:让复盘持续有价值
「复盘的疲劳」问题:复盘形式的僵化(「复盘的仪式化」(每次都是同样的流程同样的套话——「复盘的价值衰减」(同类故障的重复出现——「重复故障」是复盘失效的铁证——「同类故障的重复率」是复盘质量的终极度量——「重复率」的监控(故障的根因分类统计——「根因的帕累托」(少数根因类别占多数故障——「帕累托的攻坚」(高频根因类的专项治理——「故障的分类学」(根因的分类体系(配置、变更、容量、依赖、代码——「分类」的统计意义。「复盘的边界」:哪些要复盘(「复盘的门槛」:影响用户、持续超过 N 分钟、资金损失——「小故障」的处理(不必全量复盘——「轻量复盘」(一句话记录根因与修复——「复盘的分级」(重大故障全流程、小故障轻量记录——「复盘的成本」与故障的严重度匹配。「故障库」的建设:故障的档案化(「故障库」的字段:时间线、根因、行动项、「检索」的价值(新变更前查「类似故障」——「故障库的查询」作为变更评审的输入——「故障库」是组织的「免疫记忆」——免疫系统的记忆细胞——「没有故障库的组织,每次故障都是第一次」——故障库的检索习惯**是工程文化的标志。
复盘的进阶:复盘的「数据化」与「组织的复盘文化」
复盘的进阶:复盘的数据化度量与组织复盘文化的建设。「复盘的数据化」:「复盘的度量指标」:复盘的效率指标(时间线的准确度(「时间线的缺口」(监控与日志覆盖的缺口——「覆盖缺口」的改进输入——根因的分类统计(「根因分布」的年度统计——「根因的趋势」(配置错误、变更事故的占比——「变更事故」的占比(变更是故障的主要来源(「变更管理」的改进——「行动项的闭环率」的统计——「行动项的逾期」的治理——「闭环率」的季度对比——「复盘的改进」也要复盘。「MTTR 与 MTBF」的度量:故障的度量体系(「MTTR」(平均恢复时间——「MTTR 的分解」:发现时间+定位时间+修复时间——「MTTR 的缩短」:三个时间的分别优化——「发现时间」的缩短(监控的覆盖——「定位时间」的缩短(可观测性——「修复时间」的缩短(预案与自动化——「MTBF」(平均故障间隔——「MTBF 的提升」:系统性改进——「MTTR×MTBF」的可用性公式——「可用性的预算」:时间预算的分配。「复盘文化」的建设:「文化」的落地机制:复盘的公开(「复盘的公开化」(复盘文档的内部公开——「公开的范围」(全公司可读——「公开的价值」(组织的集体学习——「公开的顾虑」(敏感信息的处理——「公开的脱敏」;「无责的强化」(无责的制度化(「复盘制度的无责条款」——写进制度——「无责的例外」(故意的破坏不在无责范围——「无责的边界」清晰;「复盘的仪式感」(复盘会的质量(「复盘会的主持」(主持人的技巧——「会前的准备」(时间线预写——「会中的纪律」(不打断、不评判——「会后的发布」(复盘文档的及时发布——「复盘的质量」的评分——「复盘评分」的激励(优质复盘的奖励——「优质复盘」的示范效应。复盘的进阶总结:复盘的数据化(时间线缺口、根因分布、MTTR/MTBF、闭环率)+组织文化(公开化、无责制度化、仪式感与评分)——「复盘」的终极目标:把组织的「事故经验」变成「系统免疫力」——免疫力=故障库的知识×行动项的落地×文化的坦诚——**「免疫力的量化」:MTBF 的上升与 MTTR 的下降——这两个曲线,是组织运维成熟度的体检报告。
复盘高频问答
收尾前回答三个高频问题。「故障复盘会开成了批斗会怎么办?」——主持人的责任:「批斗会的预防」:会前的定调(「主持人的开场」(明确无责——「追责信号的消除」(管理层不发追责言论——「当事人的保护」(复盘内容的绩效隔离——「批斗的即时制止」(主持人打断追责——「重启讨论」(拉回系统分析——「复盘的文化」靠一次次的示范。「故障是第三方云厂商引起的还要复盘吗?」——要:「第三方故障的复盘」:依赖故障的影响(「依赖的故障」也会暴露自己的问题——「我们做错了什么」(没降级、没熔断、没多活——「依赖故障的自省」——「第三方的责任」与「自己的准备」(别人的错不能当自己的借口——「对依赖的防御」——熔断、降级、多活——「依赖的故障」是测试自身韧性的机会。「复盘发现根因是「人手不够」怎么办?」——根因到组织的传导:「组织性根因」的处理:人手不够=容量规划缺失——「根因的升级」(从技术问题升级为组织问题——「组织问题」的汇报(向管理层的汇报——「资源的申请」(人手不够的补救——「组织根因」的修复比技术根因难——「修复的周期」长——「复盘的诚实」(组织问题的如实记录——「记录」的价值(为未来的资源申请提供依据。复盘的问答收束:复盘的三个心智模型——「时间线是行车记录仪(忠实记录)、根因是病理报告(找到病根而非病灶)、行动项是处方(药要按时吃完)」——「blameless 不是口号,是制度」——「制度的执行」靠管理层的示范——「复盘的价值」在重复故障率的下降——「这个数字」是复盘文化的体检指标。
小结
技术故障复盘的体系:文化层(blameless 的承诺——「归因到系统而非个人」——管理层的自我克制——追责的毒性在于信息的隐瞒);流程层(文档的四结构:量化摘要→时间线重建(检测延迟的分析)→根因(五问法收敛到系统性改进点、多根因的承认)→行动项(SMART 化、完成率跟踪——行动项完成率 <70% 复盘机制需检修);组织层(复盘的分级(重大全流程、小故障轻记录)、「重复故障率」是复盘质量的终极度量、故障库的免疫记忆——变更评审前查故障库)。给复盘主持人的技巧:复盘会的开场白决定基调——「今天我们不追责,我们找系统的改进点」——然后自己先示范(「我在监控上也有责任」——「主持人先自我担责」是破冰的最快方式——以及,复盘会上最值钱的发言,往往是那个「我知道大家都看到了但没人敢说」的问题——主持人的职责就是让它被说出来。
故障复盘的最高境界:同样的事故,永远不发生第二次——做不到也无所谓,「重复率逐年下降」的组织,已经是学习型组织。
读者留言
COMMENTS 暂无还没有留言,来说第一句?