從Facebook大當機看兩個網站永遠不會告訴你的數字

2019.07.05 by
鱸魚
鱸魚 查看更多文章

在翻譯出版了18本當代文學名著之後,鱸魚決定跟別人一樣出國唸電腦,到了矽谷做了工程師。糟糕的是他竟然做得很成功,讓他一直沒有覺悟的理由。現在兜了一圈,他又重拾寫作這項嗜好。除了寫作,鱸魚偶爾也在雜誌上發表與專業有關的科技專題文章。

shutterstock
前天晚間Facebook在全球各地紛傳異常,經過22小時才完全修復。而這起當機事件,也與矽谷網路公司絕不會告訴你的「網站可用性」息息相關,究竟他們是如何衡量網站故障,並估算出對營收造成的影響?

前天Facebook大當機22小時。他們唯一的解釋是系統維修發生問題。這些公司每年投資在資料中心的基礎建設可能超過10億美金。可是金錢對於網站可用性的幫助非常有限,因為問題經常是出在營運管理與軟體設計。所以不管花了多少錢,網站還是會當。科技能夠解決的非常有限。不管當機的原因為何,網站一定要有一套仗量的機制,而這些都是商業機密。

矽谷每一個大型網路公司都有兩個永遠不會告訴你的數字:一個是「網站可用性」 (Site Availability),另一個是「當機一秒對公司造成的金錢損失」 。每一個從事網站營運的工程師對這些數字都必須倒背如流。

上面這兩個數字往往用作紅利的依據,也可以作為高層人士更換的數據。有些微小的時事局外人也許不會去注意,那就是每經過一次大當機,負責網站營運的高階主管總會有一些變動。管理不善的代價最後總是要換算成金錢。Facebook這次應該也不會例外。這些獎懲的數據都來自下面要討論的這兩個數字。

「網站可用性」到底是什麼?

這個數字是個百分比。一個永遠不當機的網站可用性就是100%。

100%是神話。過去曾有人努力追求「五個9」,也就是99.999%都不當機。那也是騙人的,甚至「四個9」99.99% 也近乎騙人。「五個9」在機器的層次可以做到,可是在網站整體功能的層次就是神話,因為網站是由無數唇齒相依的機器疊構起來的。

通常每一次網路查詢至少都會經過五到六個層次的機器群組。即使你使用的是最高端「五個9」的機器,跑完一趟查詢,那個指令的「存活率」已經自動降為「四個 9」。這是簡單的數學問題,因為任何一個層次發生問題,整個查詢就注定會失敗──在使用者來講,這就叫做當機。把「五個9」的或然率連乘六次 (指令必須經過的層次和途徑),最後真實的存活率最多只有「四個9」。層次越複雜,最後存活率就越低。

每一個網站都有一套仗量故障的機制,而這些都是商業機密。
REDPIXEL.PL via shutterstock

所以就網站整體功能而言,科技所能提供的就是「四個9」。這就是今天的科技所能做到的極限。剩下人為疏失、網站設計及資料佈局都是額外的風險。

知道內情的人會說每一個層次的機器都是一個群組,一台機器當了,其他機器可以繼續運作,交通可以繞道,所以應該沒有妨礙。這是機器廠商的美麗的謊言。這裡牽扯到非常複雜的交通導流及監控,也牽扯到資料佈局和及時性問題,礙於篇幅今天暫且跳過不談。我只能告訴你,事實從來就不是如此。

網站可用性到底是怎麼算出來的?很簡單,那就是把所有當機的「時間」加起來。

以時間計算

最簡單的算法是如下:一年共有525,600分鐘,如果一整年這台機器所有當機時間加起來是5分鐘,你的可用性就高達99.999%。這也是傳說中的「五個9」;如果當機時間是52分鐘,非常恭喜,你也近乎製造了神話──你的網站可用性高達99.99%。矽谷大部分網站都是在99.9%(520分鐘)、99.95%附近掙扎。這是一台機器的算法。如果你有一千台機器,就把所有數據加起來。當然這裡的機器是包括全部的硬體設備。

此外,這裡講的不只是機器故障的當機,而是包括所有人為疏失與定期維修所造成的當機事件。事實上人為疏失占所有當機事件的35%。這些都是額外的帳。

以時間計算是最簡單,也是最不負責任的算法。15年前我們也是這樣計算。

但事實並不這麼簡單

上面這種算法有很大的問題,因為你把時間當作唯一的衡量,而沒有考慮時段。我們都知道在尖峰時段關閉高速公路一小時,跟在半夜關閉一小時,兩者背後的意義完全不同。另一個問題是,如果機器並沒有當,只是反應緩慢,以致於使用者紛紛憤怒地關掉瀏覽器,這筆帳又要怎麼算?

所以一個成熟的網站必須就「流量」這個層次再作進一步分析。

以流量計算

要掌握這個數據就必須要有歷史資料作為根據。在這裡我們把當機轉換成會計問題。假如根據歷史資料,今天網站的總到訪量「應該」是一百萬次,可是因為當機 (不管幾點鐘當、或當了多久),總到訪量降為90萬次,那麼我今天的網站可用性就是90%。如此類推我們可以算出一季的可用性。不過這項工作需要「預估」當機那天原本該有的交通量,這部分需要大量數據支持及製作一些模型。

只是問題仍舊沒有這麼簡單。 交通代表的只是量,無法反映出「質」的損失 。就算今天因為當機,只接受了90萬次的造訪量,但這並不代表所有的造訪都圓滿結束。如果我是個電商,在最後關鍵付款功能上發生問題,這90萬次的造訪量對我毫無意義。我的收入可能是零。

所以下一步就應該再進階分析當機是哪些「功能」受到損失,也就是從量依功能來探討質。

依功能加重計算流量

這是上一步驟的延伸,也就是你不但要收集交通流量,還要以功能來區分,然後在各種不同功能上加重或減輕比重。大約5年前我們開始採用這種做法。這種做法的好處是「不把所有的交通視為等量」,所以能更精準反映出當機所受到的影響。

就Facebook的例子來說,他們幾乎所有收入都是靠廣告點擊。如果廣告點擊功能當機,收入就停擺。如果只是按讚的功能當機,對他們來說也許是不痛不癢。廣告點擊量少了一千萬次,與按讚量少了一千萬次,絕對不能等量計算。於是Facebook可能在前者加重計分,以反映出網站可用性對營收真正的影響。矽谷很多公司都是在「三個9」與「四個9」之間徘徊,而且這已經算是佼佼者。

一篇Po文到底是100個讚還是90個讚,不會有人知道真相,也不會有人在乎。
Shutterstock

至於Facebook的可用性我相信帳面上看起來會很高,但實際內容準確度會非常低,因為他們的資料真實性並不需要那麼準確。一篇Po文到底是100個讚還是90個讚,不會有人知道真相,也不會有人在乎。他們在資料讀取的路徑上,有很多變通的方法。也就是因為有了這些彈性,當機對於交通流量不會有太大影響。相反地,線上付款網站可用性通常都很低,原因是資料的真相只有一筆,絕對不能有誤差。所以讀取路徑完全沒有彈性,只要碰到當機,流量與功能也跟著停擺。

最後一個數字:網站當機每秒營收損失

萬流歸宗,最後都扯到錢這個字。最高層看到的不是99.9%或99.99%而是營收。如果前面幾個步驟都做到了,最後這個步驟就非常容易,那就是把每秒當機所造成金錢損失,以各主要功能流量依照營收來比例換算。當然這個數字會隨著公司的營運而有所改變,所以應該每年調整。而且為了簡化,你可以取一個平均值,讓所有參與營運的員工牢記在心。

當然這個白紙黑字的數字,也可以用來更換領導無方的高階主管。

網站可用性是矽谷每一家網站的最高機密,而且各自有不同的計算法。今天這裡討論的應該是經過多年演化最成熟的方式。如果我把過去十多年計算法的進化用一句話總結,那就是:

以時間計 → 以流量計 → 以功能加重流量計算

有了這個公式,網站也可以精確地算出當機對公司營收的影響。

套句商業上最常說的一句話 :「如果不知道數字,你就不可能改善。」

責任編輯:陳建鈞

《數位時代》長期徵稿,針對時事科技議題,需要您的獨特觀點,歡迎各類專業人士來稿一起交流。投稿請寄edit@bnext.com.tw,文長至少800字,請附上個人100字內簡介,文章若採用將經編輯潤飾,如需改標會與您討論。

(觀點文章呈現多元意見,不代表《數位時代》的立場。)

每日精選科技圈重要消息