一般在上班時間我很少上臉書。在家工作之後因為線上會議常常要分享螢幕畫面,我通常把臉書完全關閉。昨天早上九點鐘突然有同事敲我,告訴我「臉書不見了」。連試了幾次,真的,臉書不見了。
我的瀏覽器甚至好心提醒我 facebook.com 這個字會不會拼錯了。我們都是做網站營運的,對於這種事免不了會有點好奇加興奮。我們都很好奇別人是怎麼死的,這是一個學習過程。我們自己死過,也上過CNN;我們看過亞馬遜死、也看過臉書上一次死──2019 他們才大死一次。從每一個不同的死相,內行人大概都知道哪裡出了問題。
那年,我們是怎麼死的
有時候我真希望世界上有「那年,我們是怎麼死的」這種大型國際會議。網站死了,各家都保持絕對機密。世界上所有的成功都拿出來分享,但失敗卻從來沒有人討論,以至於我們死過的方式,別人不斷重蹈覆轍,同時讓那些還沒死到的人沾沾自喜一下⋯⋯但是他不知道,如果學不會的話,很快就會輪到他。
這個世界很奇怪,大家可以分享程式,但沒有人分享過失,以至於一定要自己親身死過,才能從裡面慢慢學習改進。一個網站的成熟與穩定,完全是流著鮮血學習過來的。這種東西學校不教,書本上學不到,專家也不開班傳授──實際上真正懂得如何經營臉書這種尺寸的網站的人也不多。
下面是昨天我捕捉到的臉書網扯畫面 :
通常一個網站上不去,出現的訊息不是這樣。網站當機通常的錯誤訊息是告訴你地址是找到了,但是房子進不去 ;或是雖然進了房子,卻進不了特定的房間。那多半是伺服器的問題,地址並沒有問題。臉書的問題是,全世界都說「抱歉,找不到這個地址」。你要瀏覽器去 facebook.com , 它繞了一圈回頭告訴你沒有這個地方。
這一下事情可大條了,臉書竟然瞬間從這個世界上消失了。
下面是亞馬遜死的時候所捕捉到的畫面:不用我解釋,這兩個畫面差別非常明顯。亞馬遜至少門牌號碼是對的,只是房間進不去。他們至少可以利用畫面告訴你發生了什麼事,至少還可以道個歉耍點小幽默消消你的氣。臉書的情況是連地址都不存在。
這麼大一個網站怎麼可能就這樣不見了?每天十幾兆次的交通流量,怎麼可能一瞬之間這個地址就不見了。
臉書不見了
臉書一共從地球上消失了六個鐘頭,而且是全面性地消失──這包括子公司,及內部的網路。天下所有大型的網站都當過,但從來沒有當得這麼乾淨、這麼長久的。
首先,我們喜歡把「當機」想成是硬體出了問題,其實絕大部分的網站停擺都不是因為硬體。硬體當然會死,而且經常會死、也很愛死,但網站都有無數可以自動切換的備機,硬體出問題只有局部、短暫的功能受到影響。現在的軟體設計,以及資料流程通常會把這些因素都考慮進去。在設計周全的網站上,硬體當機只不過像打個嗝。這種事,大的網站每小時都在發生,大部分使用者根本不知道。臉書這種尺寸的網站可能有100萬台以上的機器,我們可以用或然率算算看:假設每一台機器1年當一次,那每小時平均就有一百台伺服器會當,百萬大軍輪著來。如果這個不能擺平,那麼網站也不必經營了。所以絕大部分的網站問題都與硬體當機沒有關係。
如果不是出在硬體,那問題會出在哪裡?都出在你、我身上。
網站的問題就跟飛機失事一樣,有七成是人為因素。記得曾經在Netflix 上看過一系列《飛機為何失事》的實例探討,大部分飛機失事都以天候、機械或其他不足以致命的小原因開始,而以致命的人為疏失結束。很多災難甚至是因為連續多次人為疏失所造成。
上帝通常不會給四次機會。
全世界的飛機都一樣,為什麼某些航空公司就是老出問題?那是因為「人為」,但說是人為,說穿了就是管理問題,管理問題說穿了就是公司文化問題。你不能把這麼大的問題都推給那個犯錯的人。該整頓的是文化、是高層管理。
這次臉書當得這麼全面又這麼干淨利落,不需要內行都猜得出這是入口交換機出了問題。這麼大的網站,裡面是一層又一層的網路,最外面跟世界網路接軌的地方,一定有一組交換機,告訴全世界「臉書在這裡」。你可以把它想像成一個燈塔。但是一瞬間那個燈塔熄滅了,全世界都不知道臉書在哪裡,後面就完全是骨牌效應,幾分鐘之後它就從地球表面消失。至於燈塔為什麼會熄滅?真實內幕不會有人知道,新聞只提到是在內部一次網路更新之後發生的──我猜測可能是網路工程師直接在線上更改交換機上重要檔案造成錯誤。這些交換機上通常都有一些絕對不能碰的檔案。
這些檔案一旦出了問題,就可能造成網站癱瘓──這種事幾乎每一家都會發生,只是看發生問題的交換機是在什麼層次。層次越接近入口,影響就越大。當然這次的層次應該是入口處跟世界接軌的交換機,所以影響也是全面性的。
一個網站要穩定,最好的方法就是永遠不要做任何改變。因為只要有了改變就會發生錯誤。如果你把一輛汽車引擎拆開,即使不更換任何零件,再把它原封不動組裝回去,跟你保證引擎絕對不會跟原來一樣。當然,任何網站都不可能不改變,這種尺寸的大網站一年變更次數可能高達百萬。所以重點是你要如何一年變便一百萬次而不發生問題?這是一個專業問題,也需要一個非常嚴格的管理團隊來執行。
如果你把網站營運工程師這個行業想成是個洋蔥,網路工程師就是洋蔥的核心,他們的薪水通常也最高; 慢慢一層一層往外推,下一個可能就是資料平台工程師,再來也許就是資料庫工程師⋯⋯一直到洋蔥的最外層。這整個洋蔥越靠外圍變化就越頻繁,科技也越多樣化,但影響卻越小。核心的基礎工程,像網路平台和資料平台,在硬體、軟體和設定上都很少改變,可是一旦改變,影響就會非常大。
所以做網站營運工程嘛,看你選的是洋蔥的那一層。做洋蔥的心,沒事不要碰那些不能碰的東西,平常日子也蠻好過的。非碰不可的時候就要準備好人頭落地。所以我常常很同情食物鏈最底層的網路工程師。錢雖然多,市場雖然看好,但那是一種絕對不能出錯的行業。身邊的網路工程師同事很少有跟公司白頭偕老的,他們不是給挖走了,就是出錯滾了。
維持大型網站運作的工程師,都要通過嚴格的「變更程序訓練」,與考試認証,而且認証是每年更新一次。新進人員沒有拿到認証之前手不能碰伺服器。網站上所有的變更,都必須依風險分類,遵行既定的程序一步一步執行,每一步執行完畢,都需要旁邊的偵測人員同意認可。如果是高風險,必須要避開尖峰時段,要 VP 層級簽字,並且一定要有回滾計劃。處理網站變更就必須要有軍事化的管理與紀律。
令我吃驚的是,臉書這次改變入口交換機,竟然選在美國時間早上9:00的黃金時間。如果你把臉書每天的交通流量 (我個人猜測大約是每天10~15兆)換算成尖峰流量,大約是每秒2~3億。在這樣的流量下,沒有天大的理由就不應該核准執行這麼重大的改變。交換機重要檔案的變更也許不能夠回滾,這方面我不是專家,但那就更表示在按下「確認」之前,一定要兩人、甚至三人,一而再,再而三確認沒有問題才可以按下去。這種事即使已經做過一千次,還是要跟第一次一樣𧫴慎。魔鬼都躲在第一千次以後,他遠比你有耐心。所有歷史上的大當機,幾乎都是交換機出錯。
如果昨天他們不是依照這個程序走,那按下確認鍵的那個工程師,只是一個代罪羔羊,這根本是管理的問題。當然媒體也認為他們整體網路架構設計有問題。規模大的網站,都會把對外和對內網路完全分離,否則就像臉書這樣,出了問題誰都無法救援。這是把雞蛋全部放在一個籃子裡,然後拍胸脯保證籃子不會墜落。
無論如何,你都不能讓一個單一的改變,就把整個燈塔全部關掉。一旦燈塔滅掉了,要想回覆都不可能。重點不在變更的內容,而在變更的程序。
這個大當機,造成公司內部網路也無法運作 ,以至網路監控中心跟資料中心無法連線,所有的監控系統全部停擺,沒有人知道到底發生了什麼事,更糟糕的是連園區的員工都無法進到公司內。最後必須送一組網路工程師親自到資料中心走到出問題的交換機前面,直接以手碰機器的方式修正錯誤。這種時候已經完全沒有網路可連,那些遠在天邊的工程師不論有天大的本領,沒有一個幫得上忙。
這也是為什麼會停擺六個小時的原因。
池魚之殃
有媒體估計昨天這一次大當機,臉書的損失至少是好幾千萬美金。其實損失的不只是臉書,也不是我們這些難得一天清閑可以不必上臉書的使用者。有很多小型商家和網站,都必須倚靠臉書才能做生意。臉書的粉絲頁是無數商家的店面,也有無數商家用 WhatsApp 接單,所以全球池魚之殃受到的損失根本無法估計。
另外,全球不知道有多少網站,都提供了「用臉書登入」的功能,現在臉書當了,這些人也無法登入那些跟這件事根本無關的網站。我們昨天的登入量就跌了5%,這種影響還算是最低的,因為絕大部分的使用者都有自己的帳號。一般小的網站靠臉書登入的比例就會很高,受創也更重。
最後還有一種最倒楣的池魚之殃,那就是立刻就有詐騙集團乘虛而入,發送冒充臉書的email,說網站已經恢復營運,請他們再重新登入一次。
臉書當到一文不名,對於當機這件事,好夕要跟世界做個交代,但臉書連可以發言的平台都沒有。最後他們被迫困窘地選擇用競爭對手「推特」向全世界道歉,說明網站發生了一點問題。推特也趁機吃臉書的豆腐,說「歡迎全世界來到推特」。臉書有三十億用戶,哪怕是百分之一過來逛逛,都會是驚人的生意上門。
推特是少數因為臉書的災難而大發利市的網站。
省思
這個空前的當機事件,臉書該省思的很多,人頭該落地的也很多。他們在文化和領導風格上一直都是一個只有青少年心智的大巨人。他們的成長遠超過成熟,很多該做的一直沒有做。
這種絕對不能出錯的入口交換機的變更,全世界都必須面對,也每天都在執行,卻只有在他們手裡砸了,而且砸得這麼徹底。他們不應該只是找幾個人頭落地就草草結案。發生這種事,高階管理不能脫身。殺光了下面粗心的工程師並解決不了問題。
除了臉書,世界也有應該省思的地方。我們都應該知道網路是如何地把全世界都綁在一起,我們也該知道把大家串聯在一起的那根線,又是多麼地脆弱。工程師按了一個鍵,就能讓這一切消失。臉書這樣的巨人可以瞬間消失,整個網路世界也可能如此。
過去10年我們把所有一切都綁在那根線上⋯⋯我們的生活、我們的工作、我們的家庭、我們的朋友、我們的事業,甚至我們的午餐與晚餐⋯⋯都在那根線上。一旦線斷了,綁在上面的一切也可能跟著消失。
網路世界就是這麼脆弱,一個錯誤的按鍵就可能讓你我的一切歸零。