专业书籍精读 · 持续交付 · 第 11 章

管理基础设施与环境

Continuous Delivery · Ch 11 · Jez Humble & David Farley · 2010

EN →

这一章讲什么?

你打开的每个 App,背后都跑在成千上万台机器上。前面几章讲的是「怎么把新版本推上这些机器」,这一章往下挖一层,讲一件更基础的事:这些机器本身,是怎么来的、由谁改、坏了怎么办。

打个比方

把这些机器想成一家连锁餐厅的后厨。理想状态是:总部有一张后厨图纸,每家分店严格照图纸建——灶台在哪、抽油烟机什么型号、消防器材放哪一格,全都写死。新开一家店,照图纸建就行;哪家店的灶台坏了,照图纸再建一间,比修快。

老办法是另一个样子:每家店的后厨由当地师傅凭经验搭,看着都差不多。第一年没事。第三年总部要统一换灶具,才发现每家店的后厨其实都不一样——有的插座位置不对,有的当年为图方便挪过一堵墙,而挪墙这件事谁都没记下来。

旧世界为什么难

手工搭起来的服务器是被一点一点「养大」的:三年里有人临时装过一个软件包、有人为救急改过一行配置、有人开过一个端口忘了关。每一次都很小、都没记录。三年后它成了没人敢碰的活化石:还能跑,但谁也说不清它凭什么能跑,更没人能再造一台一模一样的。

于是有了那句著名的甩锅:「在我这儿是好的呀。」——多半不是谁撒谎,而是测试用的机器和线上跑的机器本来就不是一回事

它靠什么把这事掰直

第一,把机器的样子写成一张清单:装哪些东西、每个配置项是什么值、哪些端口开着。清单和代码放进同一个仓库,谁改了、为什么改,全都留痕。

第二,只让机器人照清单动手,人不许自己上去改。这是全章最硬的规矩:想改线上的一个设置,就去改清单、让自动化推下去,不能自己登上服务器敲两下。

第三,机器人定期回来对账:清单说该有的没了就补回去,有人偷偷加了什么就抹掉。机器于是不会随时间跑偏。

后来还长出更狠的一招:与其修一台跑歪的机器,不如照清单新建一台、把旧的扔掉——像一次性餐具,脏了不洗,直接换。

最后是盯梢:给这一整片机器装上仪表盘、摆在团队看得见的大屏上,哪里红了,路过的人一眼就知道。

这里有个躲不开的代价

把一切写成清单,前期投入不小;而且总有些老古董系统压根写不进清单(当年怎么装的已经没人知道了),只能继续当活化石供着。

一句话记住

别再用手养机器。把每台机器该长什么样写成清单、存进版本库,只让自动化照着清单去建、去改、去纠偏;人一旦手工登上去动一下,这台机器就再也无法被复制。

想看清单具体怎么写、期望状态怎么收敛、云和虚拟化在这里改变了什么? → 切到精读版