暗无天日

=============>DarkSun的个人博客

TIL:发布压力是系统本身的问题,不是发布流程的问题

来自 Why Your Releases Feel Harder Than They Should

是什么

很多团队发版前心里没底,这次改了什么会不会出事,回滚该谁来拍板。线上和测试环境到底一不一致,也说不太准。

这种紧张感看着像是「发布」环节的锅,但发布本身只是一个压力测试,它把系统里积攒的那些问题一次性全翻出来了。

为什么

摩擦是一点一点攒出来的,不是某天突然冒出来的。几个信号单独看都算不上致命,但它们会叠加。

  1. 职责边界不清,出了问题第一件事居然是搞清楚「这归谁管」
  2. 知识集中,某些模块就那一两个人真正吃透了,其他人不敢轻易碰
  3. 日志不解释,出了事得在压力下面还原整个经过,日志本身不够详细,不帮你解释发生了什么
  4. 告警失灵,告警要么来得太晚来不及,要么太多直接被忽略
  5. 环境不一致,测试环境和生产环境的差异藏在暗处,直到线上炸了才发现

这些信号叠加在一起,倒不是说某次发布一定会失败,就是让每次发布都觉得比实际更危险。

怎么办

最常见的反应就是给发布环节不断加码,多一道审批,多一轮人工验证,多一次协调会。短期确实有点用,但根源不在那。

说到底得换个问法。别问「这次发布安全吗」,改成问「我们的系统是不是让安全发布成为默认结果」。后面这个问题会逼你想五件事。

  1. 可理解,大多数工程师能不能推断一个变更会带来什么影响
  2. 职责清晰,出问题时谁排查、谁回滚、谁来修,没有模糊地带
  3. 可还原,日志能帮你还原事件经过,不需要靠猜
  4. 可感知,告警及时且精准,出了问题第一时间能知道
  5. 环境一致,从开发到生产,行为差异可控、可预期
release : system-design