天天看點

Github:誕生于 Ruby,60%的員工遠端工作

github誕生于2008年,現在已經是全球最大的代碼托管平台。然而鮮為人知的是,他們使用的技術棧非常簡易,ruby、shell和c。并且6成員工遠端工作,通過hubot協作。

sam lambert 在 2013 年加入 github 公司,當時的身份是公司的第一名資料庫管理者,現在已經是 github 的技術總監。在去年他曾接受 derrick harris 的采訪,解釋作為一家全球性網站,是如何通過簡單便捷的技術棧,成功支撐起超過 1000 萬使用者,超過 2500 萬項目的。

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

Github:誕生于 Ruby,60%的員工遠端工作

github吉祥物(圖檔來源:github.com)

sam lambert 介紹,在内部開發産品和各種服務時,github 特别推崇 unix 哲學,采用最簡單的技術,實作衆多基礎性功能,對于複雜臃腫的過度工程化深惡痛絕。對于技術和項目的選擇,更講究實用主義。

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

網站建立于 2008 年,至今已經 8 年,最初網站使用 ruby on rails 建構,最初的版本是由創始人自己寫的,當然 git 部分用的是 c 語言,處理 git 請求,資料合并等事項。

當初所有的資料都通過 mysql 存儲,對于臨時性質的資料,也會采用 redis 或者是 memcache 做緩存。

github 剛成立時,技術棧就這麼簡單:c,shell,以及 ruby。并且在做新項目地時候,也不會盲目嘗試新的工具和語言。

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

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

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

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

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

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

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

在 github,大概 60% 的員工遠端工作,比如 lambert 就曾經周遊世界,在不同的地方工作,github 推崇的正是分布式遠端工作的文化。

Github:誕生于 Ruby,60%的員工遠端工作

hubot機器人概念(圖檔來源:hubot.github.com)

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

hubot 支援好幾十個指令,可以查詢 mysql 狀态,可以做故障切換,可以删除資料庫表,可以備份檔案,可以複制轉移,可以做幾乎所有和運維相關的事。

除了查詢其他同僚的狀态,hubot 還能實作監控功能,比如當某個伺服器出現故障,hubot 可以自動報警。

lambert 認為,hubot 代表了未來網際網路公司的運作方式,他可以适應性地把伺服器等基礎設施以及分布于世界各地的員工緊密連接配接到一起,人與機器之間無障礙交流溝通,解決了許多傳統企業未能解決的問題。