运维的尽头不是脚本,是“反直觉”的稳定性

我们这行有个执念:把一切重复劳动交给脚本,最好半夜机房只剩风扇声。直到去年那起事故——一个自动回滚脚本在凌晨把正常的数据库变更判成致命故障,顺手将系统推进了真正的深渊。那一刻我才懂:运维的尽头不是无人值守,而是懂得在关键时刻拒绝“智能”。

一、那次“智能”回滚,把系统推下了悬崖

某支付核心系统上线风控模型 v12,附带一条 DDL:给订单表加联合索引。发布后十分钟,监控显示超时率从 0.1% 飙到 3%。自动化平台立刻判定“新版本有缺陷”,执行了预设的自动回滚。

应用层回滚到 v11,但 DDL 没回滚——v11 的代码不认识新索引,查询直接报错。更讽刺的是,真正的病因是第三方支付渠道抖动,跟这次发布毫无关系。等一线运维从被窝里爬起,手动回滚 DDL、重启服务,已经过去四十分钟。那四十分钟里,损失的不是交易额,是商户对平台的信任。

事后看,自动化犯了最典型的错误:用已知动作回应未知病因。它只看到“我要修复异常”,却完全没看到“我的修复会制造更大的异常”。

二、脚本越全能,人越像摆设

复盘会上,没有人为逻辑漏洞负责。业务方说“脚本是你们运维写的”,运维说“监控没报渠道异常”,开发说“回滚是平台自动触发的”。脚本成了最好的挡箭牌,因为它不会辩解,也不会脸红。

更可怕的是人的异化。当告警和自动执行成为习惯,一线运维的判断力在悄悄退化。我们开始相信“脚本跑得通,就等于系统跑得稳”,却忘了脚本只是逻辑的快照,它覆盖得了 happy path,覆盖不了混沌工程里的边界场景。运维不再是技术的艺术,而变成了甩锅的艺术。

三、最小干预原则:慢下来,才是高级的稳定

稳定性是反直觉的。它不奖励“更快地执行”,而奖励“知道何时不执行”。

最小干预原则的核心,是承认人类对复杂系统的认知永远存在盲区。数据库主从切换要不要全自动?网络分区时,脚本看到的是“主库失联”,人看到的是“这可能只是分区,强行切换可能导致脑裂”。这种判断,无法写成 if-else。

真正成熟的运维,敢于在系统看起来“快要出事”的时候,先等三十秒,让波形多跳一会儿。因为很多故障,本身就是“过度反应”制造出来的。对系统边界的敬畏,比对工具链的崇拜更重要。

四、好的自动化,是给人留一条“刹车线”

所以,别追求全栈自动化,要追求分级自治。把操作分成红区、黄区、绿区:涉及数据一致性、资金安全、不可逆操作的,必须人工确认;已知边界的重复劳动,交给脚本;其余交给告警和半自动预案。

同时,给所有自动化装上“熔断器”——自动回滚前,先跑一次依赖检查;自动扩容前,先验证新节点健康度。定期做故障演练,不是测系统,是测那些“聪明”的脚本在逆境下会不会帮倒忙。运维的决策智慧,永远应该排在执行速度前面。

运维的尽头,不是让系统像永动机一样空转,而是让人保持对复杂性的敬畏。脚本可以处理一万次重复,但一次边界异常就足以让盲目自动化付出代价。真正的稳定,是人与工具之间那条若即若离的边界——知道何时信任机器,更知道何时相信自己。

你在工作中遇到过“自动化帮倒忙”的经历吗?评论区聊聊。

posted @ 2026-10-03 17:19  Nil&Null  阅读(6)  评论(0)    收藏  举报