跳到主要內容

[科技]Github 用 Ruby 征服全球千萬開發者,讓 60%工程師遠端工作。


  Github 誕生於 2008 年,現在已經是全球最大的代碼託管平台。然而鮮為人知的是,他們使用的技術棧非常簡易,Ruby、Shell 和 C。並且 6 成員工遠程工作,通過 Hubot 協作。


  Sam Lambert 在 2013 年加入 Github 公司,當時的身份是公司的第一名數據庫管理員,現在已經是 Github 的技術總監 。在去年他曾接受 Derrick Harris 的 採訪 ,解釋 作為一家全球性網站,是如何通過簡單便捷的技術棧,成功支撐起超過 1000 萬用戶,超過 2500 萬項目的。

  他還談到 Github 大型的遠程工作團隊,大概有 60% 的員工通過遠程工作,利用一個叫做 Hubot 的自動化工具協作。

  在內部開發產品和各種服務時,Github 特別推崇 Unix 哲學,採用最簡單的技術,實現眾多基礎性功能,對於復雜臃腫的過度工程化深惡痛絕。對於技術和項目的選擇,更講究實用主義。

  很久以來,網站許多關鍵基礎設施,都用的是 Shell 腳本,它們很有效,多年來用著很順利。

  網站創建於 2008 年,至今已經 8 年,最初網站使用 Ruby on Rails 構建,最初的版本是由創始人自己寫的,當然 Git 部分用的是 C 語言,處理 Git 請求,數據合併等事項。

  當初所有的數據都通過 MySQL 存儲,對於臨時性質的數據,也會採用 Redis 或者是 Memcache 做緩存。

  Github 剛成立時,技術棧就這麼簡單:C,Shell,以及 Ruby。並且在做新項目地時候,也不會盲目嘗試新的工具和語言。

  隨著網站規模的壯大,Github 的開發團隊成功吸引到多名 Ruby 的核心開發者,在日後的開發過程中,繼續保持技術棧的精簡和實用。

  對於新技術的態度,Sam Lambert 表示其實工程師在工作中的自由度很高,可以試用各種新技術,只不過在實施項目時偏保守。

  有趣的是,雖然全世界一半的新項目都由 Github 託管,但事實上 Github 僅採用了為數不多的幾個技術棧。

  隨著時間的積累,Github 的用戶量爆炸性增長,後面的技術上也面臨諸多挑戰。其中最複雜的是要處理 Git 的海量請求,Sam Lambert 沒有細說具體的技術細節,但表示依然是最簡原則,不要重新發明輪子。

  一直以來,性能都是工程師不懈的追求,Github 技術團隊也是。除非這個功能足夠快,否則就不要部署。

  對於硬體奢設施,Github 沒有使用任何雲服務,而是自建數據中心,當然,為了滿足龐大的使用量,Github 相當於構建了自己的私有雲平台,Github 擁有自己的基礎設施團隊,人數不多,但可以保障 Github 的正常運行。

  隨著用戶量的增長,團隊規模也隨著擴大。和眾多創業公司一樣,Github 也面臨招聘新員工的挑戰,既要具備足夠的能力,而且要認同 Github 的文化和發展方向,為了招聘到滿足需要的人手,Github 允許員工遠程工作,這樣可以招聘到其他國家和地區的員工。

  在 Github,大概 60% 的員工遠程工作,比如 Sam Lambert 就曾經周遊世界,在不同的地方工作,Github 推崇的正是分佈式遠程工作的文化。

  為了讓世界各地的員工分工協作,Github 使用 Hubot 工具。比如可以通過聊天的方式,詢問 Hubot 現在在哪裡,Hubot 可自動回复某成員當前在世界的哪個城市,或者在辦公樓的哪一層。

  Hubot 支持好幾十個命令,可以查詢 MySQL 狀態,可以做故障切換,可以刪除數據庫表,可以備份文件,可以復制轉移,可以做幾乎所有和運維相關的事。

  除了查詢其他同事的狀態,Hubot 還能實現監控功能,比如當某個服務器出現故障,Hubot 可以自動報警。

  Sam Lambert 認為,Hubot 代表了未來互聯網公司的運作方式,他可以適應性地把服務器等基礎設施以及分佈於世界各地的員工緊密連接到一起,人與機器之間無障礙交流溝通,解決了許多傳統企業未能解決的問題。

這個網誌中的熱門文章

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

  全世界各地的人們都知道撲克牌,也都有和撲克牌打過交道,幾乎每個地方都宣稱撲克牌是自己的發明成果。中國人認為撲克牌最早起源於十二、十三世紀南宋時期傳出的中國的葉子戲(按照四季分為四種類別)。法國人則認為撲克牌是由塔羅牌演變而成,而英國人則表示自己是在所有經過認證的記錄資料中最早提到紙牌遊戲的國家。   現在,大家可能都知道怎樣玩「二十一點」或者是橋牌,但很少有人會靜下心來想一下,一副撲克牌其實是工程學、設計和歷史多方面融合而成的一個奇蹟。撲克牌不僅是一種休閒娛樂時的消遣工具,也是高額賭博和魔術技巧的練習和展示工具,不僅是一種數學概率模型,甚至有時候也會被當作貨幣或者是機密訊息的傳播媒介。   在這個過程中,撲克牌不同起源的獨特之處也展現了出來。撲克牌的名稱、顏色、標誌和設計根據不同的出處以及玩家不同的想法而發生變化。這一張張的圖形卡片不僅僅是玩具,或者是工具,他們更是展現不同習俗的一種文化印記:   有關撲克牌的誕生地一直眾說紛紜,外界也沒有達成一個確定的共識,但就像火藥、茶和瓷器這些發明一樣,幾乎可以肯定的是撲克牌也是起源於東方。國際撲克牌協會(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位:松坂桃李(侍戰隊真劍者)。   真的好多都是日劇演紅之後才驚覺他們有演過特攝作品的俳優,也更讓人想回去重看這些出道作品呢。