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

拥抱风险:把「可以坏多久」做成一笔能花的预算

Site Reliability Engineering · Ch 3 · Google(Marc Alvidrez)· 2016

EN →

这一章讲什么?

没有一个 App 敢跟你保证「我永远不会出问题」。但一家公司内部总得回答一个很具体的问题:我们到底允许自己一年出多久问题?《SRE:Google 运维解密》第 3 章讲的就是——Google 不但不回避这个问题,还把答案做成了一笔可以花的预算

先打个比方

你想让家里更安全。装把好锁几百块;加道防盗门几千块;装一圈摄像头上万;雇个 24 小时轮班的保安,一年几十万。每往上加一档,花的钱翻着番涨,安全感却只多一点点。到某一档你会发现:为了「更安全」多花的钱,已经超过家里全部值钱东西了。再往上加就不是谨慎,是亏本。

还有件更怪的事

就算你舍得花钱,用户也未必感觉得到。用户和你的服务之间还隔着一部手机、一个 Wi-Fi、一根宽带、一段运营商网络——这一整条路本身就没那么可靠。书里那句话很扎心:一个用着「偶尔抽风」的手机的人,分不出你的服务是「几乎不坏」还是「更几乎不坏」。

核心的点子:先定额度,再花掉它

既然「永不出事」既贵又没人察觉,那就大大方方定一个会出事的额度:先说清「这个服务一年允许出问题多久」,那点差额就是它的预算

然后像管家庭旅游预算一样管它:钱还在就尽管出门玩——放手上线、大胆做实验,出点小问题算花预算;钱花光了就老实在家待着——新功能一律停,全员回头修稳定性,等下期额度回来。于是「这版该不该发」这种以前靠嗓门和职级决定的争论,变成了低头看一眼账本还剩多少

还有个容易忽略的细节:「坏了多久」怎么数?直觉是看钟表——今天躺了几分钟。但铺在全球的服务几乎从不整个躺平,只会「这里坏一点、那里坏一点」。所以更实用的数法是数人头:今天来了这么多次请求,有多少次没被伺候好。这样「半死不活」也能记进账。

该怎么用

额度不是全公司一个数。内部报表工具和支付系统本来就不该定一样的目标;同一套存储,给「点一下就要出结果」的业务和给「半夜跑一批账」的业务,也该是两个档位、明码标价,让用的人自己挑——想要更稳,就多付点钱。

代价也得说清楚:这套规矩只有在「真敢停」的时候才成立——只要每次额度见底都能靠一句「可这个功能特别重要」网开一面,它就只是仪表盘上一个好看的装饰。

一句话记住

可靠性不是越高越好,它是一样有价格的东西。与其发誓「绝不出事」,不如先承认「一年就允许坏这么久」,把这点额度当预算:有余额就大胆往前跑,花光了就停下来修路。吵架于是变成了查账。

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