专业书籍精读 · SRE · 第 1 章

引论:当软件工程师去设计运维团队

Site Reliability Engineering · Ch 1 · Google(Benjamin Treynor Sloss)· 2016

EN →

这一章讲什么?

你刷淘宝、点外卖、发微信,从来没想过「它今天会不会打不开」。这份「从来没想过」的背后,有一群人专门守着机器。《SRE:Google 运维解密》第 1 章讲的就是:Google 发现「守机器」这件事,用老办法越守越贵、越守越吵,于是干脆换了一批人、换了一套规矩去守。

先打个比方

想象一家越开越大的餐厅。老办法是:客人多一倍,就多招一倍洗碗工。生意翻十倍,洗碗工也翻十倍——而洗碗工永远在洗碗,永远腾不出手干别的。

Google 的办法是:招进来的不是洗碗工,是会造机器的工程师,并立一条硬规矩——你每天最多只许花一半时间洗碗,另一半必须拿去造洗碗机。这些人受不了重复劳动,又刚好有本事把它做成机器。于是生意翻十倍,人却不用翻十倍。

旧世界为什么难

更难的其实不是人手,是两拨人天生吵架。写新功能的人,绩效来自「上线了多少东西」,所以想天天发版;守机器的人,绩效来自「今年没出事」,所以想什么都别动。而线上事故绝大多数恰恰是「刚改了点什么」引起的——两边的目标从根上就对着干。

于是就有了那种熟悉的拉锯:发布要走一堆评审,工程师则学会给改动换个名字绕过去(「我这不是发版,只是改了个开关」)。谁也没错,但事情越来越慢。

它的第二个点子:给「可以坏多久」发一张预算

这章最漂亮的一招,是把这场吵架变成看同一个数。做法是:事先大大方方承认「我们不追求永远不坏」,然后写死一个额度——这个服务一年允许出问题多久。这就是它的「预算」。

然后规矩很简单:额度有富余,就尽管上新功能,出了小问题算花预算,没人拦你;额度花光,新功能一律停,全员回头修稳定性,等下一期预算回来。想快,就得先把系统弄稳——不看谁嗓门大、职级高,只看账本上还剩多少。而追求「永远不坏」反而是错的:用户手里的手机、路上的 Wi-Fi、家里的宽带本身就没那么可靠,你再往上磨,用户根本感觉不到,钱却烧得飞快。

带来了什么

规模涨十倍,守机器的人不用涨十倍;发布不再是审批拉锯,而是查一下额度;出了事只追系统不追人,因为追人只会换来下次没人敢说实话。还有个朴素得可爱的发现:把救火步骤提前写成一本手册,真出事时的恢复速度比现场临时发挥快好几倍。

代价也得说清楚:这套要请会写代码的人来做运维,人贵也难招——服务不够大、活得不够久,硬照搬未必划算。

一句话记住

与其不停招人洗碗,不如请工程师来造洗碗机,并且用两条硬规矩逼他造:一半时间必须用来造工具,以及一年只准坏这么久,坏超了就停止上新。可靠性从一场立场之争,变成了一本大家都看得懂的账。

想进到具体机制、数字和示意图? → 切到精读版