专业书籍精读 · Google SRE · 第 18 章

SRE 中的软件工程

Site Reliability Engineering · Ch 18 · Google · 2016

EN →

这一章讲什么?

你在双十一零点下单没卡住,背后有一件很不浪漫的事:几个月前就有人在算「到那天要准备多少台机器、摆在哪几个机房」。这件事叫容量规划。Google SRE 这本书的第 18 章,讲的就是他们怎么把这件苦活交给了一个程序。

先说个怪事

整本书都在讲「怎么把线上系统运维好」,只有这一章画风突变:它讲的是运维团队自己去写一款正经软件产品。听着像不务正业——救火队为什么要去开工厂?答案是,有些苦活你手工干一遍要一周,干完就过期了;只有把它变成软件,这一周的力气才会攒下来。

旧办法为什么难

过去的做法是一张巨大的表格:这个服务在这个机房放多少、那个服务在那个机房放多少,一格一格填出来,再拉一圈人开会签字。麻烦在于,这张表记的是结论,不是理由。只要有一个前提变了——预测的用户涨得更快了、某批机器晚到两个月、某个上线推迟了——整张表就得重填一遍,之前那一周白干。人一累,就干脆往多了报,反正多买总比不够强。钱就这么烧掉了。

核心的点子:别交答案,交条件

这一章的主意其实很朴素。你请人装修,与其说「客厅装三盏灯」,不如说「客厅要够亮、开关在门口、总价不超过五万」。前一种一旦房子换了就得重说,后一种换了房子,要求一个字都不用改,方案自己重算。

Google 就是这么干的:不再交「A 机房要 50 台」这种答案,而是把一堆条件写下来交给程序——这个服务要能扛住预计的用户量、坏掉一个机房还得留两份备份、得离用户近、总花销越小越好。剩下的交给一个会解题的程序:它把所有条件当成必须同时满足的规矩,在里面挑一个最省钱的摆法。前提一变,重跑一遍就行,几分钟出新方案,没人需要再填表。

代价是什么

有一句老实话:条件写漏了,程序不会提醒你。它只会在你没写清楚的地方,给你一个最省钱的答案——你忘了说「要留备份」,它就真的一份都不留。所以人的活并没有消失,只是从「填表格」变成了「把要求想清楚」。

一句话记住

与其反复手算「要多少台机器」,不如把为什么要这么多写清楚交给程序去算。答案会过期,条件不会。而运维团队之所以值得自己写这种软件,是因为只有天天用它的人,才知道条件该怎么写。

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