譯者點(diǎn)評:
最近聽了很多資深的人士關(guān)于開源,以及商業(yè)化的分析。開源與商業(yè)化,聽起來就是一對矛盾的所在,似乎大家都在嘗試做其二者的平衡。是先有開源,還是先有商業(yè)化?俗話說“談錢不傷感情”,近幾年背靠開源的創(chuàng)業(yè)公司如雨后春筍般涌現(xiàn),即使是開發(fā)人員也是需要生活的。
容器神話 Do
ck er 曾經(jīng)無比風(fēng)光,盛極一時(shí)。即使這樣一個(gè)備受矚目,大獲風(fēng)投的熱捧的獨(dú)角獸也未能免俗,并付出了不小的代價(jià)。
今天這篇文章講述了 Docker 這家公司從誕生到巔峰到隕落,這一路上所做的抉擇,并最終斷腕做了開源與商業(yè)的分離,再一次從開源踏上找尋商業(yè)化之路。這些都是值得我們參考和思考的,不管是已經(jīng)開源或者準(zhǔn)備從事開源的。
這篇文章翻譯自
How Docker broke in half[1]
這家改變游戲規(guī)則的容器公司是其昔日的外衣。作為云時(shí)代最熱門的企業(yè)技術(shù)業(yè)務(wù)之一的它到底發(fā)生了什么?
Docker 并沒有發(fā)明容器[2] ——將計(jì)算機(jī)代碼打包成緊湊單元的方法,可以輕松地從筆記本電腦移植到服務(wù)器——但它確實(shí)通過創(chuàng)建一套通用的開源工具和可重用的鏡像使其成為主流,這使所有開發(fā)人員只需構(gòu)建一次軟件即可在任何地方運(yùn)行。
Docker 使開發(fā)人員能夠輕松地將他們的代碼“容器化”并將其從一個(gè)系統(tǒng)移動到另一個(gè)系統(tǒng),迅速將其確立為行業(yè)標(biāo)準(zhǔn),顛覆了在虛擬機(jī) (VM) 上部署應(yīng)用程序的主要方式,并使 Docker 成為新一代最快被采用的企業(yè)技術(shù)之一。
今天,Docker 仍然活著,但它只是它可能成為的公司的一小部分,從未成功地將這種技術(shù)創(chuàng)新轉(zhuǎn)化為可持續(xù)的商業(yè)模式,最終導(dǎo)致其企業(yè)業(yè)務(wù)于 2019 年 11 月出售給 Mirantis[3] 。InfoWorld 采訪了十幾位前任和現(xiàn)任 Docker 員工、開源貢獻(xiàn)者、客戶和行業(yè)分析師,了解 Docker 如何分崩離析的故事。
Docker 誕生了
2008 年由 Solomon Hykes 在巴黎創(chuàng)立的 DotCloud,這個(gè)后來成為 Docker 的公司最初被設(shè)計(jì)為供開發(fā)人員輕松構(gòu)建和發(fā)布他們的應(yīng)用程序的平臺即服務(wù) (PaaS)[4] 。
在 2010 年夏天一起搬到硅谷參加著名的 Y Combinator 計(jì)劃[5] 之前,Hykes 很快就加入了他的朋友兼程序員同事 Sebastien Pahl。已經(jīng)被拒絕一次的 Hykes 和 Pahl 重新申請,Pahl 的父親在他們面試前幾周把去舊金山的機(jī)票錢放在他們面前。唉,這對夫婦再次被拒絕,直到 YC 校友 James Lindenbaum,一家名為 Heroku 的競爭公司的創(chuàng)始人[6] ,出面為他們擔(dān)保。
我們所知道的 Docker 于 2013 年 3 月在 PyCon 上由 Hykes 首次演示[7] ,他解釋說開發(fā)人員一直要求訪問支持 DotCloud 平臺的底層技術(shù)。他在那次談話中說:“我們一直認(rèn)為能夠說“是”會很酷,這是我們的底層部分,現(xiàn)在你可以和我們一起做 Linux 容器,做任何你想做的事,去構(gòu)建你的平臺,這就是我們正在做的,”。
Docker 首席執(zhí)行官 Ben Golub 2013 年至 2017 年之間,告訴 InfoWorld,“這聽起來很老套,但 Solomon 和我談?wù)摰氖穷A(yù)發(fā)布,我們可以看到所有集裝箱船進(jìn)入奧克蘭港,我們正在談?wù)摷b箱在航運(yùn)界的價(jià)值。事實(shí)上,從世界的一側(cè)運(yùn)送汽車比將應(yīng)用程序從一個(gè)服務(wù)器帶到另一個(gè)服務(wù)器更容易,這似乎是一個(gè)需要解決的問題?!?
Docker 開源項(xiàng)目迅速崛起,吸引了成千上萬的用戶,與微軟[8] 、AWS[9] 和 IBM[10] 等公司建立了備受矚目的合作伙伴關(guān)系,并獲得了滿滿一車的風(fēng)險(xiǎn)投資[11] ,包括 Benchmark 的 Peter Fenton 和 Trinity Ventures 的 Dan Scholnick 的早期投資。調(diào)整后的公司更名為 Docker,并從 Benchmark、Coatue Management、Goldman Sachs 和 Greylock Partners 等公司籌集了近 3 億美元。然而,與許多基于開源軟件的公司一樣,它很難找到一種可盈利的商業(yè)模式,而這些投資者從未得到他們的大筆回報(bào)。。
RedMonk 分析師 James Governor 說,“Solomon 建立了過去 20 年來最引人注目的技術(shù)之一,并且在將觀點(diǎn)打包并使其對大量開發(fā)人員非常有價(jià)值的業(yè)務(wù)中。Docker 是否做出了錯(cuò)誤的決定?顯然是的,但風(fēng)投都瘋了,他們向他們投入的錢意味著他們一定覺得他們可以做任何事情,這是有問題的?!?
快進(jìn)到 2021 年,這個(gè)故事的簡版是,備受歡迎的開源容器編排工具 Kubernetes[12] 通過取代其主要利潤來源:一個(gè)名為 Docker Swarm 的企業(yè)版容器編排工具,吃掉了 Docker(業(yè)務(wù))的午餐. 然而,真實(shí)的故事要復(fù)雜得多。
開源商業(yè)化很難
巨額的風(fēng)險(xiǎn)投資、快速增長的競爭格局以及云行業(yè)巨頭都想分一杯羹的陰影,將這家年輕的公司帶入了一個(gè)猶如壓力鍋的運(yùn)營環(huán)境。
“有一種說法是'大象打架,草被踐踏',我們很清楚這不僅是針對 Docker,還有云供應(yīng)商的相互競爭。他們都想把我們拉向不同的方向。既要保持我們的價(jià)值觀和根基,又要建立一個(gè)企業(yè),這個(gè)根本就是個(gè)困局”Golub 說。
這位前 CEO 指出,隨著 Docker 的發(fā)展,所有這些因素都造成了“自然的緊張關(guān)系”。Golub 說:“我們希望建立偉大的社區(qū)并通過開發(fā)者產(chǎn)品獲利,同時(shí)還希望建立一個(gè)偉大的運(yùn)營商產(chǎn)品,讓客戶能夠大規(guī)模構(gòu)建和部署容器。這就是我們的愿景,很快我們意識到我們必須迅速擴(kuò)大規(guī)模,而且沒有太多時(shí)間來平衡社區(qū)和成為一家商業(yè)企業(yè)......在一家初創(chuàng)公司,你每天要做出 100 個(gè)決定,你希望 80 個(gè)是對的?!?
2014 年左右,Docker 開始認(rèn)真考慮將其在容器領(lǐng)域的領(lǐng)先地位貨幣化的商業(yè)戰(zhàn)略,當(dāng)時(shí)該公司將部分風(fēng)險(xiǎn)投資資金用于 2014 年 Koality 的收購[13] 和 2015 年的 Tutum 的收購[14] ,同時(shí)還推出了自己的企業(yè)支持計(jì)劃的第一次迭代。
這些投資催生了像 Docker Hub 這樣的產(chǎn)品——你可以認(rèn)為它有點(diǎn)像 Docker 鏡像的 GitHub(現(xiàn)在也存在[15] )—— 以及最終的 Docker 企業(yè)版。但這些產(chǎn)品都沒有真正受到企業(yè)客戶的歡迎,他們通常樂于與更成熟的合作伙伴合作,或者構(gòu)建而不是購買解決方案,盡管 Docker 努力生產(chǎn)客戶真正想要的一系列產(chǎn)品。
今年夏天在法國度假時(shí),Hykes 告訴 InfoWorld:“我們從未發(fā)布過出色的商業(yè)產(chǎn)品,原因是我們沒有集中注意力。我們試圖做每件事的一點(diǎn)點(diǎn)。維持開發(fā)者社區(qū)的增長并構(gòu)建一個(gè)偉大的商業(yè)產(chǎn)品已經(jīng)夠難的了,更不用說三四個(gè)了,而且基本不可能同時(shí)做到,但這就是我們試圖做的,我們花了大量的錢來做這些事?!?
DockerDocker 業(yè)務(wù)發(fā)展和技術(shù)聯(lián)盟的前副總裁、最早的員工之一 Nick Stinemates 說:“在開源之外出現(xiàn)了零技術(shù)交付,根本無法交付商業(yè)軟件。”
事后看來,Hykes 認(rèn)為 Docker 應(yīng)該花更少的時(shí)間來運(yùn)送產(chǎn)品,而應(yīng)該花更多的時(shí)間傾聽客戶的意見。Hykes 說:“我本來不會急于擴(kuò)大商業(yè)產(chǎn)品的規(guī)模,而是投入更多資金從我們的社區(qū)收集見解,并建立一個(gè)致力于了解他們的商業(yè)需求的團(tuán)隊(duì)。我們在 2014 年有一個(gè)轉(zhuǎn)折點(diǎn),當(dāng)時(shí)我們覺得我們等不及了,但我認(rèn)為我們等待的時(shí)間比我們意識到的要多?!?
其他人認(rèn)為 Docker 過早地免費(fèi)提供了太多東西。今年早些時(shí)候,谷歌的 Kelsey Hightower 告訴 Increment 雜志[16] :“他們免費(fèi)推出了一些東西,這就是本壘打。他們解決了整個(gè)問題并達(dá)到了這個(gè)問題的天花板:創(chuàng)建一個(gè)映像、構(gòu)建它、將它存儲在某個(gè)地方、然后運(yùn)行它。還需要做什么?”
Hykes 不同意這種說法。他說:“我認(rèn)為這是錯(cuò)誤的,一般來說,核心開源產(chǎn)品創(chuàng)造了巨大的增長,這首先創(chuàng)造了商業(yè)化的機(jī)會。許多公司成功地將 Docker 商業(yè)化,但 Docker 沒有。有很多東西可以商業(yè)化,只是 Docker 未能將其商業(yè)化?!?
例如,紅帽[17] 和 Pivotal[18] (現(xiàn)在是 VMware 的一部分)都是 Docker 的早期合作伙伴,將 Docker 容器集成到他們的商業(yè) PaaS[19] 產(chǎn)品(分別是 OpenShift 和 Cloud Foundry)中,并為開源項(xiàng)目做出了貢獻(xiàn)。
Stinemates 說:“如果我是慷慨的,紅帽公司早期的貢獻(xiàn)讓 Solomon 有點(diǎn)失控了。Solomon 燒掉了很多橋梁,Hacker News 上有關(guān)于他與反對者爭吵的帖子[20] 。企業(yè)合作伙伴不可能與 Solomon 一起擁有這些?!?
今天,Hykes 說他犯了混淆“社區(qū)與生態(tài)系統(tǒng)”的錯(cuò)誤。紅帽特別“不是社區(qū)的一部分,他們從來沒有為 Docker 的成功而生根,”他說?!拔覀兊腻e(cuò)誤是非常希望他們成為社區(qū)的一部分。回想起來,我們永遠(yuǎn)不會從這種伙伴關(guān)系中受益。”
因此,旅游科技公司 Amadeus 等早期客戶在 2015 年轉(zhuǎn)向紅帽,以填補(bǔ)他們認(rèn)為 Docker 留下的企業(yè)級空白。Amadeus 的云平臺負(fù)責(zé)人 Edouard Hubin 通過電子郵件告訴 InfoWorld:“我們直接從使用 [Docker 的] 開源版本的先驅(qū)模式轉(zhuǎn)變?yōu)榕c紅帽建立強(qiáng)大的合作伙伴關(guān)系,他們?yōu)槲覀兲峁┤萜骷夹g(shù)的支持。容器化是遠(yuǎn)離虛擬化的技術(shù)變革的第一步。真正的游戲規(guī)則變革者是容器編排解決方案。顯然,Docker 輸給了 Kubernetes,這對他們來說是一個(gè)非常困難的局面?!?
Kubernetes 的決定
Docker 會后悔之前做的一系列決定,因?yàn)樗芙^真正接受 Kubernetes 作為首選的新興容器編排工具 —— Kubernetes 允許客戶大規(guī)模、一致地運(yùn)行容器隊(duì)列——而不是短視地推進(jìn)自己專有的 Docker Swarm 編排器(RIP[21] )。
Docker 最早也是服務(wù)時(shí)間最長的員工之一 Jér?me Petazzoni 說:“最大的錯(cuò)誤是錯(cuò)過了 Kubernetes。我們處于集體思想泡沫中,我們在內(nèi)部認(rèn)為 Kubernetes 太復(fù)雜了,而 Swarm 會成功得多。沒有意識到這一點(diǎn)是我們的集體失敗?!?
事實(shí)是,Docker 在 2014 年有機(jī)會與谷歌的 Kubernetes 團(tuán)隊(duì)密切合作,并在此過程中可能擁有整個(gè)容器生態(tài)系統(tǒng)。Stinemates 說:“我們本可以讓 Kubernetes 成為 GitHub 上 Docker 旗幟下的一流 Docker 項(xiàng)目。事后看來,Swarm 上市太晚是一個(gè)重大錯(cuò)誤?!?
據(jù)在場的多名人士稱,谷歌舊金山辦公室的早期討論是技術(shù)性的和緊張的,因?yàn)殡p方對如何進(jìn)行容器編排持不同的意見。
Kubernetes 聯(lián)合創(chuàng)始人、現(xiàn)任 VMware 副總裁 Craig McLuckie 表示,他提出將 Kubernetes 捐贈給 Docker,但雙方未能達(dá)成協(xié)議。他告訴 InfoWorld:“那里有一個(gè)相互傲慢的因素,從他們那里我們不了解開發(fā)人員的經(jīng)驗(yàn),但相互的感覺是這些年輕的新貴真的不了解分布式系統(tǒng)管理。”其他人則表示討論更為非正式,并且側(cè)重于容器技術(shù)的聯(lián)合開發(fā)。無論哪種方式,團(tuán)隊(duì)從來沒有意見一致并最終分道揚(yáng)鑣,谷歌在 2014 年夏天推出了 Kubernetes[22] 。
Hykes 對 Google 向 Docker 提供 Kubernetes 項(xiàng)目的所有權(quán)提出異議,稱他們“有機(jī)會像其他人一樣成為生態(tài)系統(tǒng)的一部分”。
Hykes 承認(rèn)當(dāng)時(shí) Docker 和 Google 團(tuán)隊(duì)之間處于緊張關(guān)系。Hykes 說:“有那么一刻,自負(fù)占了上風(fēng)。谷歌的很多聰明和有經(jīng)驗(yàn)的人都被 Docker 的完全局外人蒙蔽了雙眼。我們沒有在谷歌工作,我們沒有去斯坦福,我們沒有計(jì)算機(jī)科學(xué)博士學(xué)位。有些人覺得這是他們的事,所以有一場自我之戰(zhàn)。結(jié)果并不是 Docker 和 Kubernetes 團(tuán)隊(duì)之間的良好合作,而此時(shí)合作確實(shí)有意義?!?
Stinemates 說:“一方面是基本的自我,另一方面是與 [Kubernetes 聯(lián)合創(chuàng)始人] Joe Beda、Brendan Burns 和 Craig McLuckie 的緊張關(guān)系——他們對服務(wù)級別 API 的需求有強(qiáng)烈的看法,而從簡單的角度來看 Docker 在技術(shù)上對單個(gè) API 有自己的看法,這意味著我們無法達(dá)成一致。”
Hykes 承認(rèn),當(dāng)時(shí) Docker 面臨著為想要擴(kuò)展容器使用規(guī)模的客戶尋找編排解決方案的壓力,但當(dāng)時(shí)Kubernetes 將成為該解決方案并不明確。Hykes 說:“Kubernetes 太早了,而且是幾十個(gè)中的一個(gè),我們并沒有神奇地猜測它會占據(jù)主導(dǎo)地位,甚至不清楚谷歌對它的承諾。我問我們的工程師和架構(gòu)師該怎么做,他們建議我們繼續(xù)使用 Swarm?!?
甚至 McLuckie 也承認(rèn)他“不知道 Kubernetes 會變成 Kubernetes。回顧歷史很容易認(rèn)為這是一個(gè)糟糕的選擇?!?
不管它失敗了,Kubernetes 最終贏得了容器編排之戰(zhàn),其余的成為軟件行業(yè)的匆匆過客。
451 Research 的分析師 Jay Lyman 說:“Kubernetes 來了,并搶走了所有的風(fēng)頭。它代表了谷歌在開發(fā)和開源方面對容器的使用,這在很多方面都超過了對 Docker 的關(guān)注。[Docker] 將 Docker Swarm 視為他們通過軟件獲利的方式。如果他們可以回去,他們可能會從一開始就與 Kubernetes 更緊密地集成。他們過于專注于獨(dú)自行動?!?
McLuckie 說:“我最深切的遺憾之一是我們沒有找到談判的方法。Docker 提供了一些非凡的體驗(yàn),而 Kubernetes 提供的東西,從體驗(yàn)的角度來看,并不那么引人注目?!?或者,正如 Docker 聯(lián)合創(chuàng)始人 Sebastien Pahl 指出的那樣:“簡單并沒有獲勝。我喜歡 Kubernetes,但它不適合普通人[23] 。”
高層的緊張氣氛
在 2015 年以 10 億美元的“獨(dú)角獸”估值完成 9500 萬美元的大型 D 輪融資之后,Docker 最終達(dá)到了炒作周期的巔峰。
Steinmates 說:“這設(shè)定了非常高的期望,并暴露了我們作為一家公司將面臨的一些基本問題。我認(rèn)為 Ben [Golub,首席執(zhí)行官] 對公司的想法與 Solomon 不同,兩人沒有意見一致應(yīng)該不是什么秘密。董事會大量摻和努力讓創(chuàng)始人開心,并給 CEO 足夠的回旋余地,使公司取得成功。如果由 Solomon 決定,我們會堅(jiān)持以社區(qū)為導(dǎo)向的路線來創(chuàng)造病毒式傳播。如果由 Ben 決定,我們會更早地轉(zhuǎn)向業(yè)務(wù)方面。這種緊張局勢導(dǎo)致我們對兩者都采取了半途而廢的方式。”
這種方法有效地催生了兩個(gè)Docker[24] :Docker 社區(qū)版(面向開發(fā)人員的廣受歡迎的命令行工具和開源項(xiàng)目)和 Docker 企業(yè)版(面向希望大規(guī)模采用容器的企業(yè)客戶的商業(yè)工具套件)。不幸的是,公司的動作太慢了,無法正式進(jìn)行拆分并相應(yīng)地分配資源。
Golub 承認(rèn)他們“應(yīng)該比實(shí)際更早地拆分業(yè)務(wù)”,而 Hykes 同意 Docker “從未找到連接公司這兩部分的方法”。
到了 2018 年,裂縫開始顯現(xiàn),因?yàn)樵摴九υ?span>日益不滿的開源社區(qū)[25] 、強(qiáng)大的合作伙伴和要求在生產(chǎn)中運(yùn)行容器的企業(yè)客戶之間找到可行的道路。
不久之后,Hykes 于 2018 年 3 月離開了他在公司的日常角色,他在一篇博客文章中指出,“作為創(chuàng)始人,我當(dāng)然有復(fù)雜的情緒。當(dāng)你創(chuàng)建一家公司時(shí),你的工作是確保它有一天可以在沒有你的情況下取得成功。然后最終有一天會到來,慶?;顒涌赡苁强鄻穮?。對于創(chuàng)始人來說,放棄一生的工作絕非易事?!?
今天回想起來,Hykes 更簡單?!拔乙庾R到我不屬于這家公司。留下對我來說沒有任何意義,所以我離開了......我多半是個(gè)應(yīng)該繼續(xù)擔(dān)任首席執(zhí)行官或離開的不快樂創(chuàng)始人?!?
Docker 一分為二
面對日益嚴(yán)重的資金問題[26] ,Docker 輪換了新任 CEO,Golub 于 2017 年 5 月讓位給前 SAP 執(zhí)行官 Steve Singh,然后 Singh 于 2019 年 6 月讓位給前 Hortonworks 首席執(zhí)行官 Rob Bearden。
最終要接受批評的是 Bearden。上任后不久,Docker 于 2019 年 11 月將其企業(yè)部分業(yè)務(wù)出售給 Mirantis[27] ,Docker Enterprise 并入 Mirantis Kubernetes Engine。
Bearden 當(dāng)時(shí)在一份新聞稿中說:“在與管理團(tuán)隊(duì)和董事會進(jìn)行徹底分析后,我們確定 Docker 有兩個(gè)截然不同的業(yè)務(wù):一個(gè)是活躍的開發(fā)者業(yè)務(wù),另一個(gè)是成長中的企業(yè)業(yè)務(wù)。我們還發(fā)現(xiàn)產(chǎn)品和財(cái)務(wù)模型大不相同?!?
Docker 如今在哪里?
有了原始投資者 Insight Venture Partners 和 Benchmark Capital 的 3500 萬美元現(xiàn)金注入,剩下的 Docker 由原始 Docker Engine 容器運(yùn)行時(shí)、Docker Hub 鏡像存儲庫和 Docker 桌面應(yīng)用程序支撐,在 7 年公司資深人士 Scott Johnston 的領(lǐng)導(dǎo)下活了下來。
Johnston 告訴 InfoWorld,他正試圖通過“像激光一樣重新關(guān)注開發(fā)人員的需求”,讓公司回歸本源?!拔覀冋J(rèn)為該公司比以往任何時(shí)候都更強(qiáng)大,因?yàn)槿c(diǎn):以客戶為中心、統(tǒng)一的市場定位和生態(tài)系統(tǒng)友好的商業(yè)模式?!?
上周 Docker 宣布更改 Docker 軟件的許可條款。很快,為大公司工作的 Docker Desktop 專業(yè)用戶將不得不注冊付費(fèi)訂閱才能繼續(xù)使用該應(yīng)用程序。
Johnston 決心不重蹈覆轍,專注于為公司的核心軟件開發(fā)人員受眾提供價(jià)值。他說:“我們的野心更大,因?yàn)殚_發(fā)人員生態(tài)系統(tǒng)要面向的是世界上的每個(gè)開發(fā)人員,而不僅僅是那些與我們的運(yùn)行時(shí)一致的開發(fā)人員?!?
Johnston 認(rèn)為“Docker 2.0”的增長機(jī)會在于為安全、已驗(yàn)證的鏡像構(gòu)建新的開發(fā)人員工具和可信內(nèi)容[28] ,以及新興計(jì)算模型(如無服務(wù)器[29] 、機(jī)器學(xué)習(xí)[30] 和物聯(lián)網(wǎng)[31] 以容器技術(shù)為基礎(chǔ)的工作負(fù)載)背后的持續(xù)動力。
同時(shí),Docker 仍然是行業(yè)標(biāo)準(zhǔn)的容器運(yùn)行時(shí),如今 Docker Desktop 安裝在 330 萬臺機(jī)器上[32] 。此外,在 Stack Overflow 的 2021 年開發(fā)者調(diào)查[33] 中,49% 的受訪者表示他們經(jīng)常使用該工具。
盡管如此,人們?nèi)匀粚赡馨l(fā)生的事情深感失望。Stinemates 說:“如果我想要輕率,我會問今天 Docker 是否存在。從職業(yè)角度來看,這很可悲。我仍在尋找一家像 Docker 一樣令人興奮和充滿活力的公司,并能創(chuàng)造出火花?!?
Hykes 說:“可以公平地說,Docker 未能實(shí)現(xiàn)其商業(yè)化的潛力……到目前為止。我很高興 Docker 在這么多年之后有再次有實(shí)現(xiàn)商業(yè)化的機(jī)會。這是對基礎(chǔ)項(xiàng)目和品牌的證明?!?