圖片來源: 

@Scale影片截圖

Google工程經理Rachel Potvin在本周舉行的一場工程會議上揭露了Google內部的程式運作架構,說明Google堅持採用單一程式儲藏庫(single respository)的理由,透露了所有的Google服務是由20億行的程式所組成,並透過名為Piper的版本控制系統來管理。

根據今年1月的數據,Google程式儲藏庫總計有10億個檔案、20億行程式,容量高達86TB,所曾執行的修改超過3500萬次,平均每天修改4.5萬次。大約有95%的Google工程師可以直接存取該程式庫。Potvin認為這應該是全球最大的單一程式儲藏庫。Google並利用Piper在全球十個資料中心間複製此單一程式庫。

20億行程式到底有多大?相較之下Linux核心(kernel)才只有4萬個檔案,1500萬行程式。Google單單在一周內由人工所更改的程式就超過25萬個檔案,1500萬行程式。

Wired另以微軟Windows作業系統為例指出,Windows自1980年代以來約使用了5000萬行程式,這代表Google程式庫大概是Windows的40倍這麼大。

龐大的Google共享程式庫支撐了Google的所有服務,從Google搜尋、Gmail、YouTube到Google Maps等。Google在全球約有2.5萬名工程師會存取該程式庫,但程式庫內容的變動並非只來自工程師。事實上,在每天4.5萬次的修改中,人為的變動只佔了1.5萬次,來自自動化系統的變動佔了3萬次。

供全球工程師存取的Google程式庫也有驚人的流量,平常每秒的查詢量高達50萬次,尖峰時刻的每秒查詢量則可達到80萬次。

大部份的Google工程師都能變更程式庫,但要改變的程式都必須先經過人工或自動化工具的審核,每個目錄都有管理者負責核准程式的變更,在變更的前後也都會經過測試及自動化檢查,正式完成的變更會自動部署到其他相關的程式中。

Potvin指出,單一程式庫的好處包括提供最正確的程式碼、執行程式分享與再利用、簡化管理、可執行自動化變更、提昇不同團隊的合作、清楚的整體樹狀架構,以及讓團隊界線與程式所有權更具彈性。

然而,Potvin也同意龐大的單一程式庫管理並非適用於每一個組織,卻非常適合具備開放及協作特性的組織。

相較於管理龐大的單一程式庫,有不少企業採用的是多程式庫的架構,由不同團隊負責管理自己的程式庫,而這牽涉到企業文化,在Reddit討論區引起了許多的迴響,有人說Google允許A團隊修改B團隊程式的作法令人覺得大家是處於同一個公司,而不只是位於不同部門的同事。

也有人認為Google所倡導的文化其實頗類似GitHub,兩者都提供了開放且共享的程式,但有別於Google的單一程式庫架構,GitHub是由很多小型、分散且獨立的程式庫所組成,而且GitHub程式更新並沒有同步。(編譯/陳曉莉)

熱門新聞

Advertisement