1、规则库的起源:为什么需要质量监控规则库?从一次线上事故说起
1.1 那个让我失眠的凌晨三点
我记得很清楚,那是去年双十一大促后的第三天。凌晨两点四十七分,手机突然像发了疯一样震动——告警电话、工作群、值班机器人,所有渠道同时炸了。
我迷迷糊糊点开监控大屏,看到支付成功率曲线从 99.97% 直接跳水到 72.3%。说实话,那一瞬间我后背的汗就下来了。干了这么多年质量保障,这种断崖式下跌意味着什么,我心里太清楚了——线上正在丢单,而且丢得很严重。
紧急拉群、回滚、止损。等一切平息下来已经是早上六点。复盘时发现,事故根因其实特别简单:一个刚上线三天的营销活动,在订单金额计算时用了新的舍入逻辑,导致部分优惠券叠加场景下出现 0.01 元的精度误差。这个误差在单笔订单上几乎不可见,但乘以千万级流量,直接造成了近百万的资损。
更让我难受的是——这个场景,我们其实测过。测试用例里写了,回归也跑了。但问题是,没人意识到这个舍入逻辑会跟已有的三条规则产生冲突。说白了,我们缺的不是测试,缺的是一个能把所有质量规则串起来、持续更新的机制。
核心教训:单点测试永远防不住组合爆炸。质量规则必须体系化、持续迭代,否则就是在赌运气。
1.2 事故背后的三个真相
那次事故之后,我带着团队把过去一年所有的线上事故翻了个底朝天。一共 47 起,分类整理后,我发现了一个规律——
| 事故类型 | 数量 | 占比 | 共同特征 |
|---|---|---|---|
| 规则冲突 | 18 | 38.3% | 新规则与旧规则互斥,无人知晓 |
| 规则遗漏 | 14 | 29.8% | 已知场景未抽象成规则,漏测 |
| 规则过时 | 9 | 19.1% | 业务已变更,规则未更新 |
| 其他 | 6 | 12.8% | 环境、数据、配置等 |
看到这个数据,我脑子里蹦出一个问题:为什么我们明明有测试用例、有checklist、有各种规范,还是挡不住这些事故?
原因其实就三个——
- 规则是散的:散落在需求文档、测试用例、代码注释、甚至某个人的聊天记录里。没人知道全貌。
- 规则是死的:写下来就没人管了。业务变了、技术栈换了,规则还躺在一年前的wiki里吃灰。
- 规则是孤立的:前端规则、后端规则、数据规则各管各的。组合起来会出什么问题?没人说得清。
我个人的习惯:每次事故复盘,我都会问三个问题——这条规则之前有没有?如果有,为什么没拦住?如果没有,为什么没抽象出来?这三个问题,基本能挖出规则库的所有漏洞。
1.3 从「救火」到「防火」:规则库的定位
那次事故之后,我一直在想一个问题:质量保障到底是在救火,还是在防火?
说实话,大部分团队都在救火。线上出问题了,紧急修复、复盘、加用例。然后下一个版本,同样的套路再来一遍。你想想看,这跟消防员天天忙着灭火,却没人去检查消防通道有没有被堵住,有什么区别?
规则库要解决的,就是这个「防火」的问题。它不是又一套文档,而是一个持续运转的机制——
- 沉淀:把每一次事故、每一个坑、每一条经验,变成可执行的规则。
- 关联:让规则之间能互相感知。新加一条规则,系统自动告诉你跟哪三条已有规则可能冲突。
- 验证:规则不是写出来就完了。每次发布前,自动跑一遍规则集,过不去的直接卡住。
- 迭代:业务在变,规则也得跟着变。定期清理过时规则,补充新规则。
嗯,这里要注意——规则库不是银弹。它解决的是「已知风险的体系化管理」,而不是「未知风险的探索」。但说实话,能把已知风险管好,已经能挡住 80% 以上的线上事故了。
1.4 规则库的核心要素
经过几次迭代,我总结出规则库必须包含的五个要素。少了任何一个,这个库都跑不起来——
| 要素 | 说明 | 我踩过的坑 |
|---|---|---|
| 规则定义 | 清晰的触发条件、预期结果、优先级 | 曾经把规则写得像散文,执行的人根本看不懂 |
| 规则分类 | 按领域、层级、风险等级划分 | 一开始不分级,结果低风险规则淹没了高风险规则 |
| 规则关联 | 记录规则之间的依赖、互斥、覆盖关系 | 两条规则互相矛盾,跑了半年没人发现 |
| 规则版本 | 每条规则都有版本号、生效时间、变更记录 | 回滚时不知道应该回退到哪个版本的规则集 |
| 规则验证 | 自动化验证规则是否被遵守 | 规则写得好好的,但没人执行,等于没有 |
我曾经犯过的错:一开始把规则库做成了「百科全书」,什么规则都往里塞。结果规则太多,执行成本太高,团队根本跑不动。后来我学乖了——规则库不是越全越好,而是越精越好。每条规则都要能回答一个问题:这条规则如果没了,会不会出事?
1.5 规则库的演进路径
规则库不是一步到位的。我见过很多团队一上来就想搞个大而全的平台,结果半年过去了还在画原型。我的建议是:从小做起,快速迭代。
下面这张图是我个人比较推荐的演进路径——
我个人比较推荐的做法是:先花两周把现有的规则全部文档化,哪怕是用 Excel 都行。然后每周花半天做一次规则评审,把重复的、过时的、冲突的清理掉。等规则稳定了,再考虑上工具、上自动化。
1.6 本章小结
回到最开始的问题:为什么需要质量监控规则库?
说白了,就是因为我们不能每次都拿线上事故当学费。一次事故的成本,可能是一个团队一个月的加班,可能是几百万的资损,更可能是用户的信任。
规则库不是什么高大上的东西。它就是一个机制——把经验变成规则,把规则变成习惯,把习惯变成文化。从那个凌晨三点的电话开始,我花了整整两年才把这件事想明白。希望你能比我快一点。