后端最危险的不是 Bug,而是“它还能跑

31 阅读3分钟

很多系统真正走向失败的那一天,并不是:

  • 服务挂了
  • 数据丢了
  • 用户进不来

而是某一天,你意识到:

“这个系统已经没人敢改了。”

但奇怪的是,它还在跑。


一、一个真实但常被忽略的瞬间

你一定经历过这种场景:

PM 说:
“这个需求其实很小,就加个判断。”

你点开代码,看了 10 分钟,然后说了一句:

“我得先看看这块有没有别的影响。”

又过了 20 分钟,你发现:

  • 这个判断涉及 3 个状态
  • 这 3 个状态来自 2 张表
  • 其中 1 张表的字段含义在不同地方不一致
  • 有个定时任务在凌晨会偷偷改这个状态
  • 还有个 MQ 消费者在失败时会重试并回滚

这时候你突然意识到一件事:

问题不在于需求小不小,而在于系统已经不允许你“小改”。


二、“还能跑”的系统,往往最危险

系统的衰败有一个极其隐蔽的阶段:

功能全部可用,但任何改动都会产生不可预测的后果。

这个阶段的系统具有几个特征:

  • 没有明显 Bug
  • 没有严重性能问题
  • 监控看起来一切正常
  • 但所有改动都靠“老同事的经验”兜底

于是系统进入一种诡异的稳定态:

稳定 ≠ 健康
稳定 ≠ 可演进


三、为什么“它还能跑”反而会害死系统?

因为“还能跑”意味着:

  • 问题不会被优先级推动

  • 技术债不会被正视

  • 架构问题不会被拆解

  • 所有人都默认:

    “先别动,风险太大”

久而久之,系统开始出现一种病态:

任何新增需求,都只能通过“补丁”实现。

而补丁最擅长做的事情只有一件:
让未来的任何改动都更困难。


四、系统真正失控的信号,不是事故,而是这些话

如果你在团队里经常听到下面这些话,要警惕

  • “这块代码不要随便动”
  • “你先照着原来的方式 copy 一份”
  • “之前就是这么写的”
  • “现在这样也没出过事”
  • “改这里可能会影响很多地方”

这些话的潜台词是:

系统已经不再由规则控制,而是由恐惧控制。


五、真正优秀的系统,反而经常“出问题”

这听起来反直觉,但是真的。

优秀系统的特征往往是:

  • 小问题经常被暴露
  • 非法操作立刻失败
  • 不合理调用马上报错
  • 隐式行为被不断清理

因为它们遵循一个原则:

让问题尽早出现,而不是让风险慢慢积累。

相比之下,“还能跑”的系统,
是在把所有问题延迟到一次无法承受的爆炸里


六、一个判断系统是否“还能被拯救”的简单问题

你可以问自己一个问题:

如果现在让我重写这个模块,
我能不能清楚说出:
哪些行为是合法的,哪些是绝对不允许的?

如果答案是“说不清”,
那这个系统的问题,已经不是代码层面的了。