19 世纪 30 年代,欧洲的毛皮猎人进了斯科特河谷。
在那之前,那地方叫河狸谷。河狸多到能给一条河谷命名。
然后它们没了。数以千计,清理得很干净。
这不是环保故事。这是一次教科书级别的删库事故——有人删错了组件,回滚用了一百八十年。停机时间长了点。
先说被删的那个组件干什么用。
河狸坝不是蓄水池。它干的活是把一条直来直去的溪流,改成一堆冷水缓流塘。坝埂拦出来的水面,水浅、流慢、温度低。幼年银鲑在淡水里过第一个夏天,靠的就是这个——水温一高,鱼应激,长得慢,扛不过去。
你把河狸删了,等于把它维护的那套基础设施一起删了。湿地退了,冷水缓流没了。
建坝之前,French Creek 的幼年银鲑存活率 8%。
8%。这数放我们那行叫什么,叫这服务本来就不该上线。
2015 年,斯科特河流域委员会开始打补丁。
在 Sugar Creek 支流上,他们手搓了两座人工河狸坝——木桩打进河床,柳枝编起来,铺针叶树枝,缝里塞砾石、稻草和泥。三年后,又在 French Creek 上加了更多。
这方案丑得没法看。丢架构评审会上,第一个被毙的就是它。
但它上线了。
说句实话,我一开始看到这类东西,反应是——又一个「人类帮大自然把家修好了」的温情稿。看到后半段才改主意。
真正有意思的不是人修的坝立住了。是人修的坝被原主人接手了。
当地剩下的河狸,有时会跑来接管这些人工结构,然后改它、扩它。流域委员会的 Charnna Gilmore 有句话,我看到的时候笑了一下:河狸一旦接管某处结构,工程质量会明显超过人类建的水平。
当然会超过。
人家维护的是自己的家。
这跟外包没关系,跟谁在一线 on-call 有关系。真正把系统守住的那帮人,是跑不掉的那帮人。
数据是这样:新形成的栖息地大约 9000 平方米,能撑住超过 8500 条幼年鲑鱼;跟没修坝的河段比,恢复区水温更低。两年后回到斯科特河的鲑鱼数量,超过这项研究里监测的其他任何一条河。连着大旱那年,别处的鲑鱼往下掉,它这边还行。
NOAA 西北渔业科学中心的鱼类生物学家 Michael Pollock 把这结果形容成「极其惊人」。研究发在《Frontiers in Ecology and Evolution》上。
数确实惊人。让我愣住的不是这个数。
是我算了下时间。1830 年代删掉这个组件,2015 年搓出第一个能顶上的补丁,中间隔了一百八十年。这补丁还得靠人一根一根编柳枝。一开始也只是勉强能用,得等原主人回来才算真正修好。
这剧本我太熟了。
一个系统跑得好好的,有人看里面某个环节不顺眼——不产出、占资源、没人说得清它在干嘛——删了。三年后开始出莫名其妙的故障,五年后没人知道为什么,于是开始堆补丁、堆 runbook、堆监控,去模拟那个被删掉的东西。堆到最后,所有人都在维护一堆模拟器,没人记得原件长什么样。
区别只在于,我们删的是代码,删错了顶多半夜爬起来回滚。他们删的是河狸,回滚花了一百八十年,还是手工的。
所以每次有人跟我讲「让 AI 把这段祖传屎山重构一下」,我都会想起这条河。
AI 看到的是「没用的孤儿任务」。我看到的是「某次事故换来的补丁」。斯科特河这个案子里,那被删掉的一行,是一百五十年后才被人发现原来是根承重梁。
补一刀。
Pollock 还有句话,比「极其惊人」重要得多——河狸能不能重新繁盛,最终取决于土地所有者是否容忍它们。
看到了吗。技术这关过了,剩下那关是人。
坝修得再结实,柳枝编得再密,砾石塞得再满,隔壁地主嫌河狸淹了他家一块地,一铲子下去,整个恢复项目归零。这跟线上一个道理:架构画得再漂亮,SLO 定得再科学,一个拍脑袋的 deadline 压下来,照样有人周五 16:55 把它推上生产。
我原来想说,教训是「别小看自然」。太软了,删掉。
真正的教训只有一条,一行,能拿走:动任何东西之前,先假设它是某次你没赶上的事故留下的墓碑。确认不了,就先别动。
我们把河狸请回来了。代价是一百八十年,外加两拨人蹲在溪边手工编柳枝。
下次打算删哪个组件,最好先问问它走了之后谁来 on-call。
