9月16日,《連線》雜志(Wired)周三報道稱,支持谷歌所有互聯(lián)網(wǎng)服務的軟件擁有約20億行的代碼,相當于Windows操作系統(tǒng)的40倍。
谷歌有多大?答案可以根據(jù)其營收、股價、用戶數(shù)量,甚至是影響力來回答。但這些也不是全部標準,我們還可以用代碼數(shù)量來衡量。
谷歌工程經(jīng)理蕾切爾·波特文(Rachel Potvin)日前在一次業(yè)界會議上表示,運行谷歌所有互聯(lián)網(wǎng)服務的軟件的代碼數(shù)量約為20億行。
相比之下,微軟Windows操作系統(tǒng)的代碼數(shù)量為5000萬行,意味著谷歌服務所需軟件的規(guī)模是Windows的40倍。
這20億行代碼運行著谷歌搜索、谷歌地圖、Google Docs、Google+、GoogleCalendar、Gmail、YouTube和其他所有谷歌服務。而且,這些代碼全部位于單一一個谷歌代碼庫中,面向谷歌的25000名工程師開放。
在公司內部,谷歌就將這些代碼視為一個龐大的操作系統(tǒng)。波特文說:“我猜想,這是全球使用中的最大單一代碼庫。”
雖然谷歌是一個個例,但這凸顯了軟件在互聯(lián)網(wǎng)時代變得越來越復雜,以及我們如何調整編程工具和理念以適應這種復雜性。
開發(fā)和維護這20億行代碼并不是一項簡單的任務,面臨著巨大的技術挑戰(zhàn)。谷歌擁有一套自主研發(fā)的“版本控制系統(tǒng)”,被稱為“Piper”,用來維護這些代碼。
Piper運行在幾乎谷歌所有的在線基礎設施上,橫跨10個不同的谷歌數(shù)據(jù)中心,允許谷歌工程師針對各個項目使用或合并這些代碼。當然,對于一些敏感的代碼,如PageRank搜索算法,會單獨放置在一個代碼庫中,面向特定人員開放。
開發(fā)和運行這樣一套系統(tǒng)不僅需要技術,也需要強大的計算能力。Piper涵蓋約85TB的數(shù)據(jù),而谷歌的25000名工程師每天又會對這些代碼進行約45000次的更新。
這是一項十分繁重的任務。Linux開源操作系統(tǒng)擁有1500萬行代碼,40000個軟件文件。而谷歌工程師每周要修改250000個文件的1500萬行代碼。當然,Piper支持許多自動化操作。
像谷歌這種系統(tǒng)同樣適用于其他企業(yè)嗎?當然。例如,F(xiàn)acebook就擁有2000多萬行代碼,他們也是將這些代碼視為一個單一項目。還有許多其他公司也是這樣做,只是規(guī)模小一些。
與此同時,谷歌和Facebook還爭取將這種系統(tǒng)普及給所有人。目前,兩大互聯(lián)網(wǎng)公司正在開發(fā)一個開源的“版本控制系統(tǒng)”,允許人們大規(guī)模的修改代碼。
這看似極端,畢竟,當前似乎沒有幾家公司擁有像谷歌和Facebook這么多的代碼。但相信在不久的將來,它們會有。