Google的技術(shù)是云計算開源化的主要推動力之一,Hadoop、NoSQL類數(shù)據(jù)庫等開源軟件都源于Google的技術(shù)。但搜索巨頭本身對于自身技術(shù)的開源態(tài)度卻有點糾結(jié)。這種糾結(jié)主要源于不想放棄自身的這一競爭優(yōu)勢,但是在微軟、VMware、EMC等紛紛擁抱開源的大趨勢下,Google終于意識到在開源的環(huán)境下推進自己云戰(zhàn)略的重要性,哪怕把它最大的秘密部分開源化也在所不惜,現(xiàn)在這一戰(zhàn)略已經(jīng)初見成效。
Craig McLuckie把想法告訴了Urs Hlzle,這位Google全球數(shù)據(jù)中心網(wǎng)絡(luò)的監(jiān)管人并不喜歡這個想法。
McLuckie 跟Google西雅圖分部的兩位工程師希望把Borg再造成一個開源項目。Borg是管理調(diào)度Google從搜索到地圖等一切服務(wù)所需資源的軟件工具,正是有了它,Google才能將一個個計算任務(wù)打包分配到它龐大的全球網(wǎng)絡(luò)。多年以來,Borg一直是Google保守得最好的秘密之一。而 McLuckie想把它的藍(lán)圖(至少是部分藍(lán)圖)共享給互聯(lián)網(wǎng)。
“我們第一次去找Urs時,他對這個想法實際上是不高興的,” McLuckie說:“因為我們要做的是把運營Goolgle的秘密武器作為開源技術(shù)拱手讓人。”
但 Hlzle等Google要員最終批準(zhǔn)了這一項目—Kubernetes這個名字起源于古希臘,是船長或者駕駛員的意思。今天是它推出1周年的日子,過去12個月,已有超過370名程序員給項目提交了12500份“commit”,他們當(dāng)中大部分都不是Google的人,其中就包括3名頂級貢獻(xiàn)者。
Kubernetes 代表了Google在云計算領(lǐng)域與Amazon、微軟等努力進行競爭時的戰(zhàn)略轉(zhuǎn)變。傳統(tǒng)上,Google對于驅(qū)動其在線帝國的基礎(chǔ)技術(shù)的保護是非常嚴(yán)的— Borg就是很好的一個例子,且從某種程度上來說仍然如此。但現(xiàn)在Google已經(jīng)是一家對云計算態(tài)度非常認(rèn)真的公司,它正在邀請別的公司和開發(fā)者在自己的基礎(chǔ)設(shè)施之上做網(wǎng)站、開發(fā)應(yīng)用(注:類似Amazon當(dāng)年做AWS的路子),因此是封閉的、不公開的。邀請其他公司在其基礎(chǔ)設(shè)施之上開發(fā)運行應(yīng)用,所以開源更多的是面向整個軟件社區(qū)做出的一種平等交換。
Kubernetes最初是由McLuckie和其他兩位工程師Joe Beda 、Brendan Burns一起構(gòu)思的,他們都是Google云服務(wù)的開發(fā)團隊成員。在他們看來,Kubernetes這個開源項目開源推動開發(fā)者使用Google Compute Engine,這項云服務(wù)可為外部構(gòu)思和開發(fā)者提供“虛機”,在虛機上面幾乎可以跑任何代碼,而Kubernetes則為代碼的跨環(huán)境運行(云服務(wù)、本地數(shù)據(jù)中心)提供有效的管理手段。Hlzle最終同意這一點值得犧牲掉保留自己代碼的優(yōu)勢。“云對于Google來說絕對是勢在必行,” McLuckie說:“我們必須用新的方式運營。我們必須把自己的專長帶給社區(qū)。”
Google的演進
Google 的舉動也是對云計算崛起所推動的更大轉(zhuǎn)變的響應(yīng)。現(xiàn)在開發(fā)者很容易就可以在一堆機器上面開發(fā)軟件,而且往往都是用開源的。在那么多機器上跑專用軟件的成本高昂,滿足特定需求很困難。無論是提供像Google Compute Engine這樣的服務(wù),還是為此類服務(wù)開發(fā)軟件,現(xiàn)在的云公司都必須擁抱開源。微軟也已經(jīng)意識到這個不爭的趨勢,為了推動其Azure云計算服務(wù)的發(fā)展而擁抱開源。VMware和EMC也已經(jīng)這樣做了。
但Google的態(tài)度有點掙扎。它的技術(shù)是云計算領(lǐng)域開源力量崛起的主要推動力之一。只是這家公司一直對開源運動保持著適當(dāng)?shù)木嚯x?,F(xiàn)在它走得更近了。
過去10年,Google開發(fā)出軟件來管理軟件在其成千上萬臺機器上的運行。它疑心很重,把運行大規(guī)模機器的能力視為自己的競爭性優(yōu)勢,不想讓人看到這一軟件的面目。然后,過了幾年,Google會時不時公布1、2篇相關(guān)技術(shù)的論文,開源界就會開始山寨Google的技術(shù),很多技術(shù)都是這樣,如 MapReduce催生了Hadoop,BigTable公布出來后,一大堆“NoSQL”數(shù)據(jù)庫就如雨后春筍般冒出來了。
Borg的情況大抵也是一樣的。幾年前,Twitter和加州大學(xué)伯克利分校的工程師開發(fā)了一款名為Mesos的工具,現(xiàn)在,它成了Twitter、Airbnb等知名互聯(lián)網(wǎng)服務(wù)的基礎(chǔ)。還有好些項目也在圍繞著Docker容器技術(shù)(Borg的運作也是這樣,將軟件打包進軟件“容器”然后通過Google網(wǎng)絡(luò)到處交付出去)開發(fā)類似的工具。
不過現(xiàn)在在云業(yè)務(wù)需求等力量推動下,Google正在改變角色。它分享出來的不僅僅只是一篇研究論文,把一些小的在線基礎(chǔ)設(shè)施開源,而是把整個體系轉(zhuǎn)變成開源項目(至少在某種程度上)。
如 Burns所述,他和Beda 、McLuckie都看到了有很多其他項目正在利用Borg及容器技術(shù)的想法,所以他們認(rèn)為Google可以幫助推進這件事情。“我們感覺大家在把一塊塊碎片拼接完整是遇到了困難,”他說:“我們有那個圖案。我們有10年的經(jīng)驗,知道怎么把碎片拼到一起。”
誠然,Kubernetes并不是開源的Borg。它沒有Borg或者Borg的繼任者Omega那么復(fù)雜。從目前情況來看,它不能管理那么多臺機器。“我們?nèi)栽诔咏麭org同等規(guī)模努力,”Beda說:“Kubernetes初期關(guān)注的焦點是核心概念要對。”
但是Borg和Omega的部分開發(fā)者也在做Kubernetes,其中包括Uber的工程師Eric Brewer、John Wilkes及Brian Grant。有做過的人來做Kubernetes對于這個開源項目來說意義重大,而這個項目的未來目標(biāo)是糾正Borg、Omega的錯誤,最終超越這兩位前輩。
在這個對開源如此器重的世界里,這是Google參與競爭的最好方式。對于很多人來說,容器就是軟件開發(fā)的未來。而Google現(xiàn)在正扮演著這個未來的領(lǐng)導(dǎo)角色。
隨便跑
不過,曾在Pivotal幫助開發(fā)過類似系統(tǒng)的Mark Kropf質(zhì)疑Google對這個項目的態(tài)度究竟有多認(rèn)真,他指出Beda已經(jīng)離開了公司。而云服務(wù)提供商Digital Ocean的CEO Ben Uretsky則認(rèn)為,Kubernetes等系統(tǒng)的應(yīng)用情況并沒有那么廣泛。“容器技術(shù)尚未成熟,”他說:“我們還處在炒作周期的頂峰。”
但無論Kubernetes的命運如何,從很多意義上來說,它仍指出了軟件開發(fā)的未來。
Google 在自己的數(shù)據(jù)中心使用著自己的軟件容器。不過1年前推出Kubernetes時,它找到開源的Docker作為搭檔。當(dāng)Docker母公司尋求將自己的容器技術(shù)與某些自己的軟件工具進行捆綁時,Google和Kubernetes項目卻開始擁抱Docker的替代品Rocket—一個完全獨立的容器格式。
McLuckie 強調(diào),Kubernetes現(xiàn)在同時支持Docker和Rocket。他希望業(yè)界最終能回歸到一個獨立的容器格式去,但他解釋說這不是選邊站。他說,Kubernetes“應(yīng)該成為瑞士。”聽起來有點理想主義,但這是云公司必須干的事情:提供開源軟件,然后隨便別人怎么用。McLuckie 說:
正在發(fā)生的這場顛覆要比任何一家公司都要大。