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