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

配置管理

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

EN →

这一章讲什么?

几乎每家公司都有那么一台「谁也不敢碰的服务器」——上面跑着要紧的业务,可它当年怎么装起来的、后来被谁改过什么,早已没人说得清。它哪天坏了,公司就只能靠几个老员工的记忆去考古重建。《持续交付》第 2 章讲的就是怎么让这种机器彻底消失:把「一套系统是怎么组装起来的」完整写下来、存起来,每改一笔就留一条记录

打个比方

一家连锁咖啡店要开第二家分店。如果第一家的味道全靠店长的手感——豆子多少克凭感觉、机器压力当年调过一次也没记录,那第二家永远开不出一样的味道。反过来,如果每一步都写进一本谁都能照做的手册,那么开第十家店、甚至第一家被水淹了要重建,都只是照手册再来一遍。配置管理就是给软件系统建这本手册——而手册自己也要进档案室,改一笔就留一条记录:谁、什么时候、改了什么。

旧世界为什么难

三件事。一是改动只发生在机器上、不发生在手册上:有人半夜登上服务器改了个参数,问题当场解决,可这一改从此只活在那台机器里。二是日积月累,每台机器都长得不一样了:同样的包装上去,有的好好的、有的出怪毛病,谁也说不清差在哪。三是没有「昨天那个好状态」可退——出事想退回去,才发现不知道昨天是什么样。

核心点子

这一章的主张能浓缩成两句大白话。第一句:凡是决定系统长什么样的东西,都要进档案室——不只是程序,还有各种设置、安装脚本、用到的第三方零件,甚至「这台机器该装什么系统、打哪些补丁」。验收标准很硬气:一个新同事在一台崭新的电脑上,从档案室取一份、敲一条命令,就该能把整套系统建起来。

第二句:同一批货发往所有分店,只换标签。打好的那一个软件包,从测试一路到上线全程用同一个,绝不为每个环境各打一个;环境之间的差异(连哪个数据库、发不发真邮件、开哪些功能)在装机那一刻从外面塞进去。这样你测过的东西和交给用户的才是同一个东西——所有检验能作数全靠这一点。

还有一条铁律:以后不许在机器上手工改任何东西。要改就改档案室里那份定义,再让自动化推到所有机器上。

带来了什么

机器坏了可以随手扔掉、重建一台一样的;改错了能退回任意历史状态;出了事能查到是谁在什么时候改了哪一项。诚实的代价是:把一切写成脚本、还要长期维护这本手册,前期明显更慢——而且设置项一多,手册自己也会长成一套需要小心维护的复杂东西。

一句话记住

判断配置管理做得好不好,只要一个问题:给你一份档案和一批空白机器,你能不能把整套系统原样重建出来? 能,你就永远有退路;不能,你的系统就还活在某几个人的记忆里。

想进到具体机制、四问体检表、对比表和示意图? → 切到精读版