就在一年前,Solomon Hykes創(chuàng)造了開源Docker項目。此后Docker的人氣一路飆升,僅次于OpenStack成為最受歡迎的云開源項目。相比OpenStack的四年歷史,Docker只有兩年的歷史,創(chuàng)造了歷史上發(fā)展最快最受歡迎的云開源項目記錄。
簡單來說,Docker是一個由GO語言寫的程序運行的“容器”。目前云服務(wù)的基石是操作系統(tǒng)級別的隔離,在同一臺物理服務(wù)器上虛擬出多個主機。Docker則實現(xiàn)了一種應(yīng)用程序級別的隔離:由直接操作虛擬主機(VM)轉(zhuǎn)換到操作程序運行的“容器”上來。Docker的熱門可謂天時地利人和。Google帶動的云端系統(tǒng)開發(fā)運維方式正朝向高彈性的云端化發(fā)展;開源軟件的發(fā)展也達(dá)到史上巔峰,Linux開發(fā)環(huán)境的諸多創(chuàng)新技術(shù)吸引開發(fā)人員形成聚合效應(yīng);與此同時,開發(fā)人員與運維人員都渴望更有效率的工具。
Docker這個最火熱的科技公司之一,9個月前已經(jīng)獲得一筆1千5百萬美元的資金,兩個月前又有新一輪4千萬美元的資金注入,儼然就是創(chuàng)業(yè)有成的典范。然而,這個成功的故事背后卻有一段鮮為人知的辛苦過程。
Docker這家公司的歷史可追溯至2010年,創(chuàng)業(yè)至今短短4年,和一些知名的網(wǎng)絡(luò)公司一樣,在創(chuàng)業(yè)的路上歷經(jīng)不少波折。
原本這家公司是以dotCloud的名稱成立,打算投入當(dāng)時普遍看好的云端運算服務(wù)──PaaS(Platform as a Service)。PaaS這樣的服務(wù)主要訴求開發(fā)人員的電腦只要連得上網(wǎng),隨時隨地都能寫代碼,而且在程序開發(fā)完成后,立即就能部署在云端平臺上運行,開始提供服務(wù)。
PaaS的作法跟傳統(tǒng)開發(fā)方法有很大的不同,傳統(tǒng)開發(fā)應(yīng)用程序的做法,必須先準(zhǔn)備好開發(fā)環(huán)境、測試環(huán)境,待一切就緒后開發(fā)團隊才開始寫代碼;然而準(zhǔn)備開發(fā)環(huán)境不僅是一件麻煩的事,而且得事先投資相對應(yīng)的軟硬件來建立開發(fā)環(huán)境;相較之下,PaaS的作法強調(diào)快速啟動,讓開發(fā)人員跳過上述步驟,直接在PaaS平臺上動手寫程序,而費用則是依用量計價,用多少就付多少。
照理來說,PaaS是個好構(gòu)想,后市可期。但是,現(xiàn)實的問題是市場接受度不如預(yù)期,PaaS市場起飛速度頗慢,因而dotCloud公司的業(yè)務(wù)遲遲不見起色。而且,PaaS市場已經(jīng)不夠大了,當(dāng)時又有許多家廠商在角逐,使得dotCloud公司的處境更是雪上加霜,背后的投資公司則急著要創(chuàng)辦者找到新出路。
面臨公司經(jīng)營上艱難困境,dotCloud的創(chuàng)辦人Solomon Hykes(目前在Docker公司擔(dān)任CTO)決定放手一搏,效法開源運動的精神,把自身在開發(fā)PaaS平臺時為了方便采用Linux Container而研發(fā)的一套工具(即Docker)開放給大家使用。
Docker開源項目發(fā)布后,短時間內(nèi)就獲得熱烈的回應(yīng),因為它降低了Container技術(shù)的使用門檻。開發(fā)人員只要把寫好的應(yīng)用程序在自己的電腦上封裝為DockerContainer,這個容器就擁有極高的移動性。它可以被送到測試主機,進(jìn)行上線前的測試,接著同一個容器可以再派送到正式上線的主機,可以是企業(yè)自己的服務(wù)器,或是其他支持Docker容器的公眾云服務(wù)。
只要使用同一個容器就可以達(dá)到自動部署作業(yè),也就是其口號所強調(diào)的:“Build Ship Run Anything Anywhere”。這套機制背后的愿景──基礎(chǔ)架構(gòu)的程序化(Infrastructure as Code),也就是讓運維人員擁有程序開發(fā)的優(yōu)點,一來是可以寫程序來控制應(yīng)用程序的自動部署,再者這些控制程序亦如一般軟件開發(fā)一樣有版本控制。諸多Docker的優(yōu)點,不僅讓開發(fā)人員迅速擁抱這項工具,負(fù)責(zé)應(yīng)用程序部署、運維的系統(tǒng)運維人員也熱愛Docker,對于全棧工程師而言,Docker根本就是救世主了。
在互聯(lián)網(wǎng)發(fā)展史上,不乏公司關(guān)鍵轉(zhuǎn)型成功的例子,例如知名的照片分享網(wǎng)站Flickr,原本打算開發(fā)網(wǎng)絡(luò)游戲,但在開發(fā)過程中發(fā)現(xiàn)了照片分享這個更大的需求,結(jié)果這家公司根本沒推出任何一款游戲,卻靠著Flickr大大成功;Twitter一開始則是開發(fā)播客(Podcast)平臺,但在過程中發(fā)覺訊息快速溝通的重要需求,才推出現(xiàn)在我們所認(rèn)識的Twitter服務(wù);其他大家也都熟悉的PayPal、Instagram、YouTube等等,都是歷經(jīng)關(guān)鍵轉(zhuǎn)型才找到今天的成功之路。
Docker成功帶動轉(zhuǎn)型之后,dotCloud公司也順勢更名為Docker,專心開發(fā)Docker平臺。不過,Docker這個關(guān)鍵轉(zhuǎn)型的故事有個地方有別于其他,在于Docker所使用的Container技術(shù),其實已經(jīng)行之有年,并非是Docker第一個發(fā)現(xiàn)。
就在Docker這個Linux Container的管理工具問市之后,許多知名公司陸續(xù)對外公開早已經(jīng)在使用Linux Container技術(shù),例如Google在DockerConf大會公開其龐大的云端服務(wù)依賴的就是Linux Container技術(shù),每周有20億個以上的Container在運作,每當(dāng)一個人使用Gmail服務(wù),就有一個相對應(yīng)的Container啟動。
而且,并不只有Google采用Container技術(shù),一些知名的大型網(wǎng)絡(luò)公司也已經(jīng)使用Container技術(shù)多時。再者,Linux Container技術(shù)可溯源自Unix,甚至是大型主機的技術(shù)架構(gòu)。那么,既然Docker一推出就能掀起IT架構(gòu)革命如此大的影響力,為何這么多年來沒什么人看出Container的技術(shù)潛力,而直到Docker問世才吹響IT架構(gòu)新革命的號角?為何許許多多的開源軟件公司沒抓到這個機會?這個現(xiàn)象點出了另一個值得思考的議題。
對于這樣的現(xiàn)象的解讀是User Driven Innovation,由使用者驅(qū)動的創(chuàng)新。這與另一個說法──創(chuàng)意源于解決問題,或有異曲同工之妙。
Docker的誕生,源于dotCloud公司要解決PaaS平臺的開發(fā)、部署與管理上的問題,因為遇到了問題必須面對,想辦法去解決,而最后也找到了一個解決問題的完美方法,也就是Docker。
由此可見,Docker誕生的方式,有別于一般公司開發(fā)產(chǎn)品的模式。Docker是在解決問題的過程中找到的創(chuàng)意,而不是先尋找創(chuàng)意,再想辦法付諸實踐。這也就是為何使用Container的公司很多,卻沒有一家公司開發(fā)出像Docker這樣轟動的工具?;蛟S就是在一般開發(fā)產(chǎn)品的模式下,沒有人能夠想像到Docker這樣的工具會極大的潛力,也就不會有人去開發(fā)這樣的產(chǎn)品;唯有在實際運作的過程中,為了解決問題,才間接挖到Docker這個寶藏。
其實,User Driven Innovation不是只有發(fā)生在Docker,我們的周遭一直在發(fā)生使用者驅(qū)動創(chuàng)新的事件。例如許多人都在使用的Google、Facebook、Twitter、Netflix等等云端服務(wù),甚至BAT三巨頭都是使用者驅(qū)動創(chuàng)新的典型。這些擁有充沛技術(shù)能力的公司,為了解決自身遇到的問題,例如如何同時提供給全球數(shù)十億人使用?紛紛自己想辦法解決問題。
過去企業(yè)遇到了技術(shù)上的難題,大多只能等待IT廠商來解決問題,而IT廠商在累積諸多用戶的問題與需求后,就逐步將這些需求納入未來的產(chǎn)品開發(fā)計劃;然而,Google、Facebook、Twitter要運營全球市場,可等不及IT廠商解決問題,而且更現(xiàn)實的問題是,IT廠商可能沒有這些公司運營全球市場的經(jīng)驗,如何為其解決問題?這也解釋了為何Google、Facebook、BAT等大型網(wǎng)絡(luò)公司想辦法要招納全世界最厲害的技術(shù)人才,因為必須自己解決問題。
再者,這些大公司在解決了技術(shù)問題之后,因為他們的獲利方式普遍是依靠服務(wù)或廣告,而非一般軟件公司所依賴的授權(quán)費用,所以,這些網(wǎng)絡(luò)公司都很大方地開放其設(shè)計概念或自家開發(fā)的工具,進(jìn)而為開源軟件注入強大的活水,集眾人之力形成今日開源軟件有別于過往的聲勢。
Docker這個例子再次印證了使用者驅(qū)動創(chuàng)新的趨勢,對于新的科技公司,或甚至是任何人,即便你沒有想到未來明確的方向,先卷起袖子,好好解決當(dāng)下的問題吧,或許其中就有意想不到的寶藏。