跳到主要內容

[科技]GitLab 史上最大危機:工程師誤刪大量資料,導致線上服務崩潰。


  當晚 GitLab 的工程師們已經花了很長時間對抗垃圾訊息的發送者(spammer),這些大量垃圾訊息已經嚴重影響到資料庫的穩定性跟服務速度,甚至嚴重到鎖死資料庫的寫入功能。更嚴重的是二號資料庫連複製都有困難了,跟上線的一號資料庫的同步已經嚴重延遲,甚至拒絕連線一號資料庫。線上處理的工程師裡,有一位工程師的時區位於荷蘭,當時荷蘭已是深夜,身心俱疲的他決定把不聽話的二號資料庫資料全部刪除再重建。


  他本意是要對二號資料庫伺服器特定目錄下 rm -rf(Unix 系的指令,不經 double check 就可以強制刪除所在目錄下的所有資料)指令,結果執行 1 秒或 2 秒後,猛然發現目標伺服器弄錯了,是正在線上服務中的一號伺服器而不是有問題的二號!

  這就好像空難電影裡,雙引擎客機要處理故障的右引擎時,卻把維持飛機動力的左引擎給關掉了。

  緊急取消指令後,300GB 的資料被刪到只剩下 4.5GB。而最後一個潛在可用的備份是 6 小時前手動操作的,一時之間連網站都連不進去了。根據該公司 Google docs 的維護紀錄在最新的訊息提到:「這個事件影響了網站資料庫(包括 issue 問題和 merge requests 合併請求),但不影響 git repos(git 版本管控檔案庫和 wiki 服務)。」

  由於不是所有資料都遺失了,所以對用戶來說還是稍感安慰,但是該文件在「遇到的問題」(Problems Encountered)小節裡,最後總結:

  「因此,換句話說,部署的 5 個不同備份/還原技術中,沒有一個能可靠地工作或第一時間還原回來,我們只能從 6 小時前有效的備份還原。」

  看到這句以後,彷彿全世界所有人的臉都震驚地凍結好幾秒,這有點像鐵達尼號的沉沒是連續好幾個安全機制同時失常。GitLab 表示:

  ⑴ ±6 小時的資料遺失了。

  ⑵ 大致上,受到影響的有 4,613 個常規專案、74 個專案分叉(fork)和 350 個導入(import),總共 5,037 個項目。 由於 Git 儲存庫沒有遺失,我們可以重建這些專案在意外發生前所有的用戶/群組,但是我們無法恢復這些項目任何 issue 問題。

  ⑶ ±4979(所以 ±5000)註解遺失了。

  ⑷ 可能有 707 個用戶不見了,很難從 Kibana 日誌中確定。

  ⑸ 1 月 31 日 17:20 之前創建的 Webhook 被復原了,但在此時間後創建的則遺失了。

  GitLab 成立於 2014 年,獲得 2,000 萬美元的風險投資,客戶包含 IBM、Macy’s、ING、NASA 、VMWare 等。在本週,這些投資者的內心恐怕比其用戶更加忐忑不安。

  GitLab 這事件發生以後,突顯了幾個議題,除了網站資料備份機制的漏洞,可能還有工程師的超時工作(導致判斷失常)以及工作紀律問題:sudo rm -rf 這樣最高權限不經 double check 就強制執行的指令,在使用時應該要有適當的 sop 或更好的權限防呆。這事件反映出,除軟硬體設備外,人員的良善管理更為重要。

  亡羊補牢為時不晚,GitLab 展現誠意以 YouTube 直播與 Twitter 將訊息公諸於網路,但是看來 GitLab 必須非常努力,才能挽回客戶與投資者對該公司的信心。對其他仰賴資訊科技的公司而言,相信這也是很好的借鏡。

這個網誌中的熱門文章

[娛樂]玩了多年的撲克牌,其實背後是結合工程、歷史、設計的大學問!

  全世界各地的人們都知道撲克牌,也都有和撲克牌打過交道,幾乎每個地方都宣稱撲克牌是自己的發明成果。中國人認為撲克牌最早起源於十二、十三世紀南宋時期傳出的中國的葉子戲(按照四季分為四種類別)。法國人則認為撲克牌是由塔羅牌演變而成,而英國人則表示自己是在所有經過認證的記錄資料中最早提到紙牌遊戲的國家。   現在,大家可能都知道怎樣玩「二十一點」或者是橋牌,但很少有人會靜下心來想一下,一副撲克牌其實是工程學、設計和歷史多方面融合而成的一個奇蹟。撲克牌不僅是一種休閒娛樂時的消遣工具,也是高額賭博和魔術技巧的練習和展示工具,不僅是一種數學概率模型,甚至有時候也會被當作貨幣或者是機密訊息的傳播媒介。   在這個過程中,撲克牌不同起源的獨特之處也展現了出來。撲克牌的名稱、顏色、標誌和設計根據不同的出處以及玩家不同的想法而發生變化。這一張張的圖形卡片不僅僅是玩具,或者是工具,他們更是展現不同習俗的一種文化印記:   有關撲克牌的誕生地一直眾說紛紜,外界也沒有達成一個確定的共識,但就像火藥、茶和瓷器這些發明一樣,幾乎可以肯定的是撲克牌也是起源於東方。國際撲克牌協會(IPCS)主席 Gejus Van Diggele 也表示:「學者們和歷史學家對撲克牌的確切起源存在分歧,但他們普遍認為撲克牌是由東方向西方進行擴散傳播的。」   中國唐朝時期有史料提到了一種紙牌遊戲,雖然這種遊戲更像是現在的多米諾骨牌,但專家認為這是有關紙牌最早的書面記載材料。歐洲 14 世紀末期的一些參考文獻曾提到一種「撒拉遜人(阿拉伯人的古稱)玩的遊戲」突然傳入歐洲,這表明紙牌不是來源於中國,而是來自阿拉伯半島。   此外,還有一種說法是,紙牌最早是由游牧民族從印度帶來的一種能夠預測命運的卡片,為紙牌的起源打上了更為久遠的一個印記。但無論是哪一種起源,應該都是有一定的商業契機促進了紙牌在遙遠的東方與歐洲之間的傳播,與此同時印刷技術的發展也加速了紙牌跨國界的生產和傳播。   在中世紀的歐洲,紙牌遊戲多是與喝酒、賭博還有其他的一些陋習聯繫在一起。由於紙牌遊戲傳播的廣泛性,以及它給當地所帶來的破壞性,當局決定禁止紙牌遊戲。歷史學家 Michael Dummett 在他的《塔羅牌遊戲》一書中提到了巴黎的一項法令,禁止公民在工作日玩紙牌。後來,紙牌遊戲被教會視為異端邪說,傳教士也紛紛遊說,認為「

[開發]如何讓 Unicode 圖案 (特殊符號) 在網頁上正常顯示?

展示了許多可以取代網站小圖示的 UNICODE,其優點非常顯而易見: ① 字元的傳輸量遠低於圖片的傳輸量。 ② 可以減少許多小圖示的 http 請求量。 那麼接下來的問題會是,要怎麼讓網站所使用的 UNICODE 表情圖案、特殊字元,都能讓所有訪客看到呢? ⑴ 符號數量。 符號數量越多,代表字型檔案越大。目前 Unicode 各國文字的數量太多先略過,屬於圖案的部分超過一千個,持續有新圖案推出。 ⑵ 編碼為 UTF8。 1 2 3 4 5 <!-- HTML4 --> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" > <!-- HTML5 --> <meta charset= "utf-8" > ⑶  使用方式 使用 Unicode 的話,這一切就能懶人化,先查閱 Unicode 特殊符號一覽表,找到對應的圖案,例如西洋棋黑騎士圖案,那麼在網頁想顯示的地方,直接擺上 Html 代碼: 1 &#9822; 輸入以上字元就行,但是為方便維護,建議還是將該內容直接貼上「♞」。 注意:在使用不同的字體時,渲染出來的符號可能會有所不同,因此,iOS 和 Android 將一些unicode字元轉換為表情符號。在您使用這些 unicode 字元之前,最好測試一下它們,確定不會出現在不同瀏覽器表現不同的情況出現。

[特攝]網友票選《最帥特攝俳優》你知道這些人氣男星都是超級戰隊英雄出身的嗎?

  網路資源還沒那麼發達的小時候,第四台能看的日本節目其實很有限,偶爾轉到忍不住停下看的特攝作品也成了接收日本文化的媒介之一。如果說拍攝泳裝寫真是日本女星的必經之路,那麼校園劇和特攝日劇應該就是大部分男星的跳板了,尤其《假面騎士》根本等同"爆紅速成班"一樣主演男星幾乎都大紅,但別忘了《超級戰隊系列》也捧紅不少線上人氣俳優。最近日本網站就請網友們從戰隊英雄出身的俳優中票選了一下覺得最帥的戰隊英雄,大家又會第一個想到誰呢?   第10位:山田裕貴(海賊戰隊豪快者)。   第9位:金子昇(百獸戰隊牙吠連者)。   第8位:白川裕二郎(忍風戰隊破裏劍者)。   第7位:中尾暢樹(動物戰隊獸王者)。   第6位:志尊淳(烈車戰隊特急者)。   第5位 永井大(未來戰隊時間連者)。   第4位:千葉雄大(天裝戰隊護星者)。   第3位:玉山鐵二(百獸戰隊牙吠連者)。   第2位:橫濱流星(烈車戰隊特急者)。   第1位:松坂桃李(侍戰隊真劍者)。   真的好多都是日劇演紅之後才驚覺他們有演過特攝作品的俳優,也更讓人想回去重看這些出道作品呢。