TIL:发布压力是系统本身的问题,不是发布流程的问题
来自 Why Your Releases Feel Harder Than They Should。
是什么
很多团队发版前心里没底,这次改了什么会不会出事,回滚该谁来拍板。线上和测试环境到底一不一致,也说不太准。
这种紧张感看着像是「发布」环节的锅,但发布本身只是一个压力测试,它把系统里积攒的那些问题一次性全翻出来了。
为什么
摩擦是一点一点攒出来的,不是某天突然冒出来的。几个信号单独看都算不上致命,但它们会叠加。
- 职责边界不清,出了问题第一件事居然是搞清楚「这归谁管」
- 知识集中,某些模块就那一两个人真正吃透了,其他人不敢轻易碰
- 日志不解释,出了事得在压力下面还原整个经过,日志本身不够详细,不帮你解释发生了什么
- 告警失灵,告警要么来得太晚来不及,要么太多直接被忽略
- 环境不一致,测试环境和生产环境的差异藏在暗处,直到线上炸了才发现
这些信号叠加在一起,倒不是说某次发布一定会失败,就是让每次发布都觉得比实际更危险。
怎么办
最常见的反应就是给发布环节不断加码,多一道审批,多一轮人工验证,多一次协调会。短期确实有点用,但根源不在那。
说到底得换个问法。别问「这次发布安全吗」,改成问「我们的系统是不是让安全发布成为默认结果」。后面这个问题会逼你想五件事。
- 可理解,大多数工程师能不能推断一个变更会带来什么影响
- 职责清晰,出问题时谁排查、谁回滚、谁来修,没有模糊地带
- 可还原,日志能帮你还原事件经过,不需要靠猜
- 可感知,告警及时且精准,出了问题第一时间能知道
- 环境一致,从开发到生产,行为差异可控、可预期