Google 為什麼要把最重要的祕密開源?

36氪 於 12/06/2015 發表 收藏文章

Google的技術是雲計算開源化的主要推動力之一,Hadoop、NoSQL類數據庫等開源軟件都源於Google的技術。但搜索巨頭本身對於自身技術的開源態度卻有點糾結。這種糾結主要源於不想放棄自身的這一競爭優勢,但是在微軟、VMware、EMC等紛紛擁抱開源的大趨勢下,Google終於意識到在開源的環境下推進自己雲戰略的重要性,哪怕把它最大的祕密部分開源化也在所不惜,現在這一戰略已經初見成效

Craig McLuckie把想法告訴了Urs Hölzle,這位Google全球數據中心網絡的監管人並不喜歡這個想法。

McLuckie跟Google西雅圖分部的兩位工程師希望把Borg再造成一個開源項目。Borg是管理調度Google從搜索到地圖等一切服務所需資源的軟件工具,正是有了它,Google才能將一個個計算任務打包分配到它龐大的全球網絡。多年以來,Borg一直是Google保守得最好的祕密之一。而McLuckie想把它的藍圖(至少是部分藍圖)共享給互聯網。

“我們第一次去找Urs時,他對這個想法實際上是不高興的,” McLuckie説:“因為我們要做的是把運營Goolgle的祕密武器作為開源技術拱手讓人。”

但Hölzle等Google要員最終批准了這一項目—Kubernetes這個名字起源於古希臘,是船長或者駕駛員的意思。今天是它推出1週年的日子,過去12個月,已有超過370名程序員給項目提交了12500份“commit”,他們當中大部分都不是Google的人,其中就包括3名頂級貢獻者。

Kubernetes代表了Google在雲計算領域與Amazon、微軟等努力進行競爭時的戰略轉變。傳統上,Google對於驅動其在線帝國的基礎技術的保護是非常嚴的—Borg就是很好的一個例子,且從某種程度上來説仍然如此。但現在Google已經是一家對雲計算態度非常認真的公司,它正在邀請別的公司和開發者在自己的基礎設施之上做網站、開發應用(注:類似Amazon當年做AWS的路子),因此是封閉的、不公開的。邀請其他公司在其基礎設施之上開發運行應用,所以開源更多的是面向整個軟件社區做出的一種平等交換。

Kubernetes最初是由McLuckie和其他兩位工程師Joe Beda 、Brendan Burns一起構思的,他們都是Google雲服務的開發團隊成員。在他們看來,Kubernetes這個開源項目開源推動開發者使用Google Compute Engine,這項雲服務可為外部構思和開發者提供“虛機”,在虛機上面幾乎可以跑任何代碼,而Kubernetes則為代碼的跨環境運行(雲服務、本地數據中心)提供有效的管理手段。Hölzle最終同意這一點值得犧牲掉保留自己代碼的優勢。“雲對於Google來説絕對是勢在必行,” McLuckie説:“我們必須用新的方式運營。我們必須把自己的專長帶給社區。”

Google的演進

Google的舉動也是對雲計算崛起所推動的更大轉變的響應。現在開發者很容易就可以在一堆機器上面開發軟件,而且往往都是用開源的。在那麼多機器上跑專用軟件的成本高昂,滿足特定需求很困難。無論是提供像Google Compute Engine這樣的服務,還是為此類服務開發軟件,現在的雲公司都必須擁抱開源。微軟也已經意識到這個不爭的趨勢,為了推動其Azure雲計算服務的發展而擁抱開源。VMware和EMC也已經這樣做了。

但Google的態度有點掙扎。它的技術是雲計算領域開源力量崛起的主要推動力之一。只是這家公司一直對開源運動保持着適當的距離。現在它走得更近了。

過去10年,Google開發出軟件來管理軟件在其成千上萬台機器上的運行。它疑心很重,把運行大規模機器的能力視為自己的競爭性優勢,不想讓人看到這一軟件的面目。然後,過了幾年,Google會時不時公佈1、2篇相關技術的論文,開源界就會開始山寨Google的技術,很多技術都是這樣,如MapReduce催生了Hadoop,BigTable公佈出來後,一大堆“NoSQL”數據庫就如雨後春筍般冒出來了。

Borg的情況大抵也是一樣的。幾年前,Twitter和加州大學伯克利分校的工程師開發了一款名為Mesos的工具,現在,它成了Twitter、Airbnb等知名互聯網服務的基礎。還有好些項目也在圍繞着Docker容器技術(Borg的運作也是這樣,將軟件打包進軟件“容器”然後通過Google網絡到處交付出去)開發類似的工具。

不過現在在雲業務需求等力量推動下,Google正在改變角色。它分享出來的不僅僅只是一篇研究論文,把一些小的在線基礎設施開源,而是把整個體系轉變成開源項目(至少在某種程度上)。

如Burns所述,他和Beda 、McLuckie都看到了有很多其他項目正在利用Borg及容器技術的想法,所以他們認為Google可以幫助推進這件事情。“我們感覺大家在把一塊塊碎片拼接完整是遇到了困難,”他説:“我們有那個圖案。我們有10年的經驗,知道怎麼把碎片拼到一起。”

誠然,Kubernetes並不是開源的Borg。它沒有Borg或者Borg的繼任者Omega那麼複雜。從目前情況來看,它不能管理那麼多台機器。“我們仍在朝着接近Borg同等規模努力,”Beda説:“Kubernetes初期關注的焦點是核心概念要對。”

但是Borg和Omega的部分開發者也在做Kubernetes,其中包括Uber的工程師Eric Brewer、John Wilkes及Brian Grant。有做過的人來做Kubernetes對於這個開源項目來説意義重大,而這個項目的未來目標是糾正Borg、Omega的錯誤,最終超越這兩位前輩。

在這個對開源如此器重的世界裏,這是Google參與競爭的最好方式。對於很多人來説,容器就是軟件開發的未來。而Google現在正扮演着這個未來的領導角色。

隨便跑

不過,曾在Pivotal幫助開發過類似系統的Mark Kropf質疑Google對這個項目的態度究竟有多認真,他指出Beda已經離開了公司。而云服務提供商Digital Ocean的CEO Ben Uretsky則認為,Kubernetes等系統的應用情況並沒有那麼廣泛。“容器技術尚未成熟,”他説:“我們還處在炒作週期的頂峯。”

但無論Kubernetes的命運如何,從很多意義上來説,它仍指出了軟件開發的未來。

Google在自己的數據中心使用着自己的軟件容器。不過1年前推出Kubernetes時,它找到開源的Docker作為搭檔。當Docker母公司尋求將自己的容器技術與某些自己的軟件工具進行捆綁時,Google和Kubernetes項目卻開始擁抱Docker的替代品Rocket—一個完全獨立的容器格式。

McLuckie強調,Kubernetes現在同時支持Docker和Rocket。他希望業界最終能迴歸到一個獨立的容器格式去,但他解釋説這不是選邊站。他説,Kubernetes“應該成為瑞士。”聽起來有點理想主義,但這是雲公司必須乾的事情:提供開源軟件,然後隨便別人怎麼用。McLuckie 説:

引用正在發生的這場顛覆要比任何一家公司都要大。

本文編譯自:wired.com


資料來源:36Kr

留言


請按此登錄後留言。未成為會員? 立即註冊
    快捷鍵:←
    快捷鍵:→