事故复盘的核心原则:无指责文化、系统性思考、根因分析(RCA)、持续改进闭环
大家好,我是老赵。做数据治理这些年,我复盘过不下百起事故。说实话,刚开始那几年,复盘会开得像批斗会,大家互相甩锅,最后不了了之。后来我慢慢悟出一个道理:复盘不是为了找人背锅,而是为了找到系统里的那个「洞」。
这一章,咱们聊聊事故复盘的四个核心原则。这四个原则,说白了就是一套组合拳,缺一个都不行。
原则一:无指责文化 —— 先别问「谁干的」,先问「为什么会发生」
我见过最典型的场景:凌晨两点,数据管道挂了,值班同学紧急修复。第二天复盘会上,领导第一句话就是「这是谁负责的模块?」。你想想看,这话一出口,谁还敢说实话?
无指责文化,不是说出了问题不追责,而是把焦点从「人」转移到「系统」上。我个人习惯在复盘会开场就说一句话:
「今天咱们只找原因,不找凶手。所有发言,对事不对人。」
为什么要这么做?因为人一旦感到被指责,就会启动防御机制——隐瞒、推诿、甚至篡改日志。这对根因分析是致命的。
我的经验:在事故复盘文档里,永远不要出现人名。用「值班工程师A」「开发同学B」代替。这不是和稀泥,是保护信息源。
我曾经遇到一个案例:某次数据延迟事故,复盘时发现是开发同学手动执行了一条SQL,导致锁表。如果当时追责,这位同学大概率会被处分。但我们选择先分析「为什么手动执行会成为常态」——结果发现是自动化运维平台有bug,手动执行是唯一的workaround。你看,根因根本不是人,是系统缺陷。
原则二:系统性思考 —— 别盯着一个点,要看整条链
很多同学复盘时喜欢「线性归因」:A导致B,B导致C,所以根因是A。但真实世界的数据系统,哪有这么简单?
系统性思考要求我们把事故放在整个数据链路里看。从数据采集、传输、存储、计算到服务,每个环节都可能埋雷。
我建议用「5W1H」框架来展开系统性分析:
| 维度 | 问题示例 |
|---|---|
| What(发生了什么) | 数据质量规则告警触发,准确率从99.9%降到85% |
| When(什么时间) | 凌晨3:15分,刚好是批量任务高峰期 |
| Where(哪个环节) | ODS层到DWD层的ETL任务 |
| Who(谁发现的) | 监控系统自动发现,值班同学确认 |
| Why(为什么发生) | 上游源系统字段类型变更,ETL未适配 |
| How(如何发生的) | 变更未通知数据团队,无版本兼容检查 |
你看,这么一梳理,问题就不只是「ETL代码没适配」这么简单了。它暴露了变更通知机制缺失、上下游契约管理薄弱、兼容性检查自动化不足等多个系统性问题。
注意:系统性思考最容易犯的错是「分析过度」。别把无关的环节硬扯进来。我的原则是:只分析跟事故有直接或间接因果关系的节点,别搞成「全链路体检报告」。
原则三:根因分析(RCA)—— 挖到第三层才算数
根因分析,说白了就是「刨根问底」。我常用的方法是「5 Whys」——连续问五个「为什么」,直到找到真正的根因。
举个例子:
- 为什么数据延迟了? —— 因为ETL任务运行超时。
- 为什么ETL任务超时? —— 因为源表数据量暴增了10倍。
- 为什么源表数据量暴增? —— 因为上游业务系统上线了新功能,未通知数据团队。
- 为什么上线新功能不通知? —— 因为没有强制性的变更通知流程。
- 为什么没有变更通知流程? —— 因为组织架构调整后,跨团队协作规范没跟上。
你看,到第五层,根因已经不是技术问题了,是组织流程缺陷。很多团队在第二层就停了,然后加个监控、改个代码,觉得完事了。结果过两个月,同样的事故换个马甲又来了。
RCA的黄金法则:如果根因可以通过「加个if判断」「加个监控告警」来解决,那大概率还没挖到底。真正的根因,往往需要流程、架构或组织层面的改进。
我个人习惯在RCA文档里用「原因树」来呈现:
事故:数据质量准确率下降
├── 直接原因:ETL映射错误
│ └── 原因:源系统字段类型变更
│ └── 根因:无字段变更感知机制
├── 触发条件:批量任务高峰期执行
│ └── 原因:无灰度发布和回滚策略
│ └── 根因:变更管理流程缺失
└── 放大因素:告警延迟30分钟
└── 原因:监控规则阈值设置过高
└── 根因:监控配置未随业务量动态调整
原则四:持续改进闭环 —— 复盘不是结束,是开始
复盘会开完了,RCA文档写好了,然后呢?很多团队就扔进知识库吃灰了。这是最大的浪费。
持续改进闭环要求我们:每个根因都必须对应一个可落地的改进项,每个改进项都必须有负责人和截止时间,每个截止时间到了都必须检查完成情况。
我推荐用「改进项跟踪表」来管理:
| 根因 | 改进措施 | 负责人 | 截止时间 | 状态 |
|---|---|---|---|---|
| 无字段变更感知机制 | 开发元数据对比工具,自动检测字段变更 | 张三 | 2024-03-15 | 进行中 |
| 变更管理流程缺失 | 建立跨团队变更通知SOP | 李四 | 2024-03-01 | 已完成 |
| 监控阈值未动态调整 | 接入业务量指标,实现阈值自适应 | 王五 | 2024-04-01 | 待开始 |
我的习惯:每次复盘会结束前,花10分钟过一遍上一次复盘的改进项完成情况。这叫「闭环的闭环」。如果改进项迟迟不落地,说明复盘本身出了问题。
嗯,这里要注意:改进措施不是越多越好。我见过一份复盘报告列了20多条改进项,结果一条都没落地。我的建议是:每次复盘,最多选3个最关键的改进项。集中火力打透,比撒胡椒面强得多。
四个原则的关系:一张图说清楚
这四个原则不是孤立的,它们构成了一个完整的复盘闭环。我画了张图,方便大家理解:
从这张图能看出来:无指责文化是土壤,没有它,系统性思考和根因分析就做不深;系统性思考是方法,帮我们看清全局;根因分析是工具,帮我们挖到病灶;持续改进闭环是目标,让每一次复盘都产生实际价值。
这四个原则,我用了好几年才真正吃透。刚开始做复盘时,我总想着「一次性把所有问题都解决」,结果哪个都没解决透。后来我学会了:每次只改进一点点,但确保改到位。慢慢地,事故越来越少,团队也越来越信任复盘这件事。
一句话总结:好的复盘,让系统越来越强壮;差的复盘,让人越来越疲惫。你选哪个?