复盘流程
5 工作日内运行结构化复盘,产时间线、根因和被跟踪行动项。
为什么
无复盘的事件是未学的课 — 同系统原因(无部署门、无金丝雀、无 runbook)存活产下次宕机,团队事件史是独特事件列表非模式。5 工作日内(记忆新鲜数据可用)结构化复盘产数据驱动时间线、5 个为什么找到的根因、带负责人和到期修系统的行动项。流程重要因它是组织从宕机学习的机制:无它每事件付客户信任但学习浪费。有它每事件使下次 更不可能,这是改可靠性的唯一可持续方式。
何时使用
每个 SEV1 和 SEV2 后,解决后 5 工作日内。SEV3 可选;SEV4 无。
如何做
1. 解决后 24h 内排,5 工作日内开 - 邀:IC、值班、变更作者、SME、引导者(无指责守护) - 60-90 分钟;每人来前已审查时间线草稿 2. 会前从数据建时间线 - 引导者拉告警、部署、聊天日志、指标截图入时间线草稿 - 会议审查并修正时间线;数据驱动非记忆驱动 3. 用 5 个为什么找根因,停在系统修复 - "为何结账坏?" → "null 折扣抛" → "无 null 测试" → "无要求测试的门" → ... - 停在可用系统变更修的原因(加测试、加门),非"更小心" 4. 写行动项:负责人、到期、系统修复 - 每项修系统非人;无"更小心"项 - 在团队 issue 跟踪器跟踪,非复盘文档 5. 发布并跟踪到完成 - 复盘向全组织分享(无指责故无秘密) - 行动项在冲刺规划审查直到全发布;事件未关直到它们完
示例
# postmortem-2026-03-15-checkout-down.md **严重性:** SEV1 **持续:** 12m **影响:** 340 订单丢失(约 $4.2k) **日期:** 2026-03-15 **作者:** Alice(引导者) ## 时间线(来自数据) 14:03 部署 v2.4.1 发布(经"小变更"覆盖跳金丝雀) 14:05 错误率 0% → 100%(null 折扣订单抛异常) 14:07 告警 CheckoutSLOBurnRateFast 触发 14:08 值班确认,作战室开,IC 指定 14:15 根因识别(v2.4.1 null 折扣 bug) 14:16 回滚决策定并启 14:20 回滚完,错误率 0% 14:32 事件宣布解决 ## 根因(5 个为什么) 1. 结账坏 → v2.4.1 对 null 折扣抛异常 2. 发布 → 金丝雀跳过 3. 金丝雀跳过 → 部署工具存在"小变更"覆盖 4. 覆盖存在 → 无策略防生产关键路径用它 5. → **修复:移除 /checkout 金丝雀跳过覆盖;要求 SRE 批准** ## 行动项(系统、有主、有期) - [ ] 移除生产关键路径金丝雀跳过 — @deploy-platform,到期 2026-03-22 - [ ] 加集成测试:null 折扣边界情况 — @payments,到期 2026-03-29 - [ ] 加部署门:金丝雀错误率 >1% 则阻塞 — @deploy-platform,到期 2026-03-22 ## 顺利处 - 告警 2m 触发、值班 2m 确认、回滚 4m — 监控和 runbook 工作 ## 出错处 - 金丝雀覆盖允许生产关键部署跳金丝雀 ## 运气处 - bug 仅影响 null 折扣订单(约 5% 流量);全影响本会 100%
常见问题
- ⚠复盘数周后开 — 记忆衰减、数据老化、时间线从回忆重构且错。
- ⚠根因是"人类错误"无系统修复 — 同错误复发因只人变非允许它的系统。
- ⚠行动项在复盘文档非 issue 跟踪器 — 冲刺规划看不见且永不发布,系统原因存活。
- ⚠复盘团队私有 — 组织无法学习,同系统缺口存在于有同工具的其他团队。
最佳实践
- ✓24h 内排复盘 5 工作日内开;会前从数据(日志、告警、部署)建时间线。
- ✓用 5 个为什么找系统根因并停在改系统的修复(加测试、加门)非人("更小心")。
- ✓行动项在 issue 跟踪器带负责人和到期;冲刺规划审查直到全发布 — 事件未关直到它们完。
- ✓复盘向全组织发布(无指责故无秘密);跨团队学习是防同缺口于他处的乘数。