你永远修不完所有 bug,人生也是
凌晨三点的告警把我叫醒。
Prometheus 大盘一片红,核心服务 5xx 飙到 30%,Slack 里已经炸了。我一边 ssh 上跳板机,一边在脑子里过可能的原因:配置变更?流量突增?依赖服务挂了?
排查 40 分钟,发现上游服务连接池耗尽,级联超时。根因是两周前一次"无害"的参数调整——连接超时从 3 秒改成 10 秒,觉得"宽裕点总没错"。没人 review,因为改动太小了。
修完写完复盘,凌晨五点。躺回床上睡不着,脑子里冒出一个念头:这种事永远不会结束。
不是这个 bug,就是下一个。系统足够复杂之后,故障不是意外,而是常态。
做运维这些年,我见过太多人(包括曾经的我)有一种执念:把系统做到不出问题。
Zero downtime、五个九、故障自愈……像信仰一样刻在运维人 DNA 里。我们建告警、做冗余、写 runbook,仿佛只要准备充分,就能消灭所有风险。
但真相是:你把故障概率从 1% 降到 0.1%,那 0.1% 发生时你依然措手不及。而且往往是你从没想到的方式。
好的系统不是不出故障的系统,而是出了故障能快速恢复、每次故障后变得更健壮的系统。
这道理放到人生里,好像也成立。
我认识一个架构师,技术极强,但每次做方案都要考虑所有边界情况、所有故障模式、未来三年的扩展性。结果?方案永远出不来,或者过度设计到没人敢碰。
后来他说了一句话,我记到现在:"80 分的方案今天上线,比 100 分的方案下个月上线有价值得多。"
完美是一种幻觉,尤其在复杂系统里。 变量太多,信息永远不完整,环境持续变化。等你准备好了,世界已经不是你准备时的样子了。
做架构如此,人生的大多数决策——换工作、选方向、要不要带团队——大概也是如此。你永远没有"准备好"的那天,只能在不完美的信息下做当时最好的决定,然后随时准备修正。
运维有个概念叫 MTTR(Mean Time To Recovery)。很多人执着于降低 MTBF(故障间隔),但真正决定系统可靠性的,往往是 MTTR。
翻译成人话:出问题不可怕,恢复得快才重要。
我见过凌晨故障 10 分钟恢复的团队,也见过小问题折腾一整天的。差距不在技术,在于有没有回滚方案、有没有清晰的排查路径、平时有没有做过演练。
人也一样。真正扛得住事的人不是不摔倒,而是摔了能快速站起来。不是没焦虑,而是有自己的"恢复机制"——运动、写东西、跟靠谱的人聊聊。
不要追求不倒,要训练恢复的速度。
最后说个反直觉的事。
SRE 有个实践叫 Chaos Engineering——主动往生产环境注入故障。逻辑很简单:与其等故障在最糟糕的时候找上你,不如在可控的时候制造它。
Netflix 的 Chaos Monkey 随机杀 production 实例,Google 定期模拟整个数据中心挂掉。因为他们知道:不经历真实压力测试,你永远不知道系统(和自己)有多脆弱。
人生也是。那些主动选择的挑战——换不熟悉的技术栈、接没把握的项目、去陌生的城市——看起来是找麻烦,但每一次"可控的故障",都在扩展你的容错边界。
而从不冒险的人,往往在真正的"黑天鹅"来临时,才发现自己一次回滚方案都没有。
凌晨五点那个睡不着的夜,我想明白一件事:
好的运维不是消灭故障,而是与故障共处。 好的人生大概也不是消灭问题,而是在问题中保持稳定,每次比上一次恢复得更快一点。
你永远修不完所有 bug。但你可以建一个修得快、修得好的系统。
这就够了。