Facebook如何發佈新程式碼

來源影片

所有程式唯一不變的原則就是不停改變。

你有兩種方法可以面對改變:逃避、或是習慣它。

Facebook選擇了後者,每天都在Push新code

什麼東西能幫助你免除每次上production那戰戰兢兢的惡夢?文化

Facebook擴展的速度跟網站的規模應該是世上數一數二快的,一般小型網站處理Deployment的問題就常常讓人頭痛了,看他們怎麼解決這問題便是相當有趣。也許你會期待Facebook是不是又開發了什麼獨門技術解決這個難題。很可惜的是,影片一開始就告訴你,能解決這問題的是開發者的文化,而不是工具。

什麼樣的文化?貫穿影片的核心主軸就是

你為你的code負責,沒有別人會幫你

Facebook本身用了大量的工具來幫忙檢查程式碼品質:

  1. IRC Bots:在你的code上production之前,你必須要先告訴IRC Bots你正在待命,否則你的code會被略過
  2. 大量測試、自動測試:Unit Test, Selenium, Watir…大家都很熟,就不細講了
  3. 分隔環境:除了基本的latest, sandbox…等等,Facebook有著GateKeeper的機制,可以直接控制要讓員工、特定地區、特定來源、特定比例的使用者看到特定的改變,從小修改到新功能都可以這樣設定
  4. Push Karma:追蹤所有人搞砸的記錄
  5. PerfLab:非常有趣的系統,記錄Production與Trunk的各種Metric,可以從圖表中輕易比較Trunk跟Production的差異,是否該Push了?Trunk是不是有問題?兩邊效能是否一致?都可以輕易目測
  6. BT:用BT來同步Hiphop編譯出來的binary

從上面的列表可以看到,這些工具並不是非常的具有革命性。那Facebook跟一般人的差別在哪裡?答案是環境,與直達開發者的責任。

影片中提到,Facebook真正管理所有Deployment的團隊其實只有幾個人,他們怎麼管理數百人的開發者團隊?

一是前面提到的工具,讓他們能很快抓出問題的來源。

二是整個環境的責任制度,各團隊有專人on-call,出問題就是找他,他再找出製造這問題的人,便可很快處理問題。

開發者就是程式的主宰

Advertisements

Facebook如何發佈新程式碼” 有 1 則迴響

迴響已被關閉。