从脸书大宕机看两个网站永远不会告诉你的数字

前天脸书大宕机22小时。他们唯一的解释是系统维修发生问题。这些公司每年投资在数据中心的基础建设可能超过10亿美金。可是金钱对于网站可用性的帮助非常有限,因为问题经常是出在运营管理与软件设计。所以不管花了多少钱,网站还是会当。科技能够解决的非常有限。不管宕机的原因为何,网站一定要有一套仗量的机制,而这些都是商业机密。

硅谷每一个大型网络公司都有两个永远不会告诉你的数字:一个是“网站可用性”(Site Availability),另一个是“宕机一秒对公司造成的金钱损失”。每一个从事网站运营的工程师对这些数字都必须倒背如流。

上面这两个数字往往用作红利的依据,也可以作为高层人士更换的数据。有些微小的时事局外人也许不会去注意,那就是每经过一次大宕机,负责网站运营的高端主管总会有一些变动。管理不善的代价最后总是要换算成金钱。脸书这次应该也不会例外。这些奖惩的数据都来自下面要讨论的这两个数字。

“网站可用性”到底是什么?

这个数字是个百分比。一个永远不宕机的网站可用性就是100%。

100%是神话。过去曾有人努力追求“五个9”,也就是99.999%都不宕机。那也是骗人的,甚至“四个9”99.99%也近乎骗人。“五个9”在机器的层次可以做到,可是在网站整体功能的层次就是神话,因为网站是由无数唇齿相依的机器叠构起来的。

通常每一次网络查询至少都会经过五到六个层次的机器群组。即使你使用的是最高端“五个9”的机器,跑完一趟查询,那个指令的“存活率”已经自动降为“四个9”。这是简单的数学问题,因为任何一个层次发生问题,整个查询就注定会失败──在用户来讲,这就叫做宕机。把“五个9”的或然率连乘六次 (指令必须经过的层次和途径),最后真实的存活率最多只有“四个9”。层次越复杂,最后存活率就越低。

每一个网站都有一套丈量故障的机制,而这些都是商业机密。

 

所以就网站整体功能而言,科技所能提供的就是“四个9”。这就是今天的科技所能做到的极限。剩下人为疏失、网站设计及数据布局都是额外的风险。

知道内情的人会说每一个层次的机器都是一个群组,一台机器当了,其他机器可以继续运行,交通可以绕道,所以应该没有妨碍。这是机器厂商的美丽的谎言。这里牵扯到非常复杂的交通导流及监控,也牵扯到数据布局和及时性问题,碍于篇幅今天暂且跳过不谈。我只能告诉你,事实从来就不是如此。

网站可用性到底是怎么算出来的?很简单,那就是把所有宕机的“时间”加起来。

以时间计算

最简单的算法是如下:一年共有525,600分钟,如果一整年这台机器所有宕机时间加起来是5分钟,你的可用性就高达99.999%。这也是传说中的“五个9”;如果宕机时间是52分钟,非常恭喜,你也近乎制造了神话──你的网站可用性高达99.99%。硅谷大部分网站都是在99.9%(520分钟)、99.95%附近挣扎。这是一台机器的算法。如果你有一千台机器,就把所有数据加起来。当然这里的机器是包括全部的硬件设备。

此外,这里讲的不只是机器故障的宕机,而是包括所有人为疏失与定期维修所造成的宕机事件。事实上人为疏失占所有宕机事件的35%。这些都是额外的帐。

以时间计算是最简单,也是最不负责任的算法。15年前我们也是这样计算。

但事实并不这么简单

上面这种算法有很大的问题,因为你把时间当作唯一的衡量,而没有考虑时段。我们都知道在尖峰时段关闭高速公路一小时,跟在半夜关闭一小时,两者背后的意义完全不同。另一个问题是,如果机器并没有当,只是反应缓慢,以致于用户纷纷愤怒地关掉浏览器,这笔帐又要怎么算?

所以一个成熟的网站必须就“流量”这个层次再作进一步分析。

以流量计算

要掌握这个数据就必须要有历史数据作为根据。在这里我们把宕机转换成会计问题。假如根据历史数据,今天网站的总到访量“应该”是一百万次,可是因为宕机(不管几点钟当、或当了多久),总到访量降为90万次,那么我今天的网站可用性就是90%。如此类推我们可以算出一季的可用性。不过这项工作需要“预估”宕机那天原本该有的交通量,这部分需要大量数据支持及制作一些模型。

只是问题仍旧没有这么简单。 交通代表的只是量,无法反映出“质”的损失 。就算今天因为宕机,只接受了90万次的访问量,但这并不代表所有的访问都圆满结束。如果我是个电商,在最后关键付款功能上发生问题,这90万次的访问量对我毫无意义。我的收入可能是零。

所以下一步就应该再高端分析宕机是哪些“功能”受到损失,也就是从量依功能来探讨质。

依功能加重计算流量

这是上一步骤的延伸,也就是你不但要收集交通流量,还要以功能来区分,然后在各种不同功能上加重或减轻比重。大约5年前我们开始采用这种做法。这种做法的好处是“不把所有的交通视为等量”,所以能更精准反映出宕机所受到的影响。

就脸书的例子来说,他们几乎所有收入都是靠广告点击。如果广告点击功能宕机,收入就停摆。如果只是点赞的功能宕机,对他们来说也许是不痛不痒。 广告点击量少了一千万次,与点赞量少了一千万次,绝对不能等量计算。于是脸书可能在前者加重计分,以反映出网站可用性对营收真正的影响。硅谷很多公司都是在“三个9”与“四个9”之间徘徊,而且这已经算是佼佼者。

一篇Po文到底是100个赞还是90个赞,不会有人知道真相,也不会有人在乎。

至于脸书的可用性我相信帐面上看起来会很高,但实际内容准确度会非常低,因为他们的数据真实性并不需要那么准确。一篇Po文到底是100个赞还是90个赞,不会有人知道真相,也不会有人在乎。他们在数据读取的路径上,有很多变通的方法。也就是因为有了这些弹性,宕机对于交通流量不会有太大影响。相反地​​,线上付款网站可用性通常都很低,原因是数据的真相只有一笔,绝对不能有误差。所以读取路径完全没有弹性,只要碰到宕机,流量与功能也跟着停摆。

最后一个数字:网站宕机每秒营收损失

万流归宗,最后都扯到钱这个字。最高层看到的不是99.9%或99.99%而是营收。如果前面几个步骤都做到了,最后这个步骤就非常容易,那就是把每秒宕机所造成金钱损失,以各主要功能流量依照营收来比例换算。当然这个数字会随着公司的运营而有所改变,所以应该每年调整。而且为了简化,你可以取一个平均值,让所有参与运营的员工牢记在心。

当然这个白纸黑字的数字,也可以用来更换领导无方的高端主管。

网站可用性是硅谷每一家网站的最高机密,而且各自有不同的算法。今天这里讨论的应该是经过多年演化最成熟的方式。如果我把过去十多年算法的进化用一句话总结,那就是:

以时间计→以流量计→以功能加重流量计算

有了这个公式,网站也可以精确地算出宕机对公司营收的影响。

套句商业上最常说的一句话:“如果不知道数字,你就不可能改善。”