Docker生態會重蹈Hadoop的覆轍嗎?

今晨在微信組中大家討論了一篇文章,剛好和第三期雲棲說《Hadoop是否已經過時》立意相似。不完全認同作者觀點,發出共享以及思考。目測微信組從中午一直吵到現在了,果然是理越辯越明。

文章來自科技頭條微信號,作者是品刀客。原文鏈接見此處


目錄

一、Docker的興起和Hadoop何其相似
二、大數據從狂熱走向了理性
三、Hadoop生態圈的演進
四、Docker的生態圈
五、Docker公司的戰略野心受生態圈狙擊
六、Docker生態圈的演進
七、開源技術也需要商業的成功
八、Docker生態圈的推論
九、給準備Docker嚐鮮的客戶的建議

一、Docker的興起和Hadoop何其相似

2015年說是Docker之年不爲過,Docker熱度高漲,IT從業人員要是說自己不知道Docker都不好意說自己是做IT的。2016年開始容器管理、集羣調度成爲熱點,K8s開始成爲熱點。但這一幕和2013年的Hadoop大數據何其相似,當年你要說自己不知道大數據,或是知道大數據不知道Hadoop,那必然招來鄙視的眼光。

雲計算喊了這麼久,從來沒有像Docker這麼火過,究其原因不外乎兩條:

1、開發者能夠用Docker,開發者要一個開發環境,總會涉及到種種資源,比如數據庫,比如消息中間件,去裝這些東西不是開發人員的技能,是運維人員的技能。而用Docker去Pull一個mySQL鏡像,或是Tomcat鏡像,或是RabbitMQ鏡像,簡易輕鬆,幾乎是零運維。做好了應用代碼,打一個Docker鏡像給測試或是運維人員,避免了從前打個程序包給測試或是運維人員,測試或運維人員要部署、配置應用,還得反反覆覆來麻煩開發人員,現在好了,丟個Docker鏡像過去,讓運維人員跑鏡像就可以,配置在鏡像裏基本都做好了。

這正好滿足了DevOps的要求,所以DevOps也一下熱起來了。開發者是一個巨大的市場,是海量的個體,通過類似於病毒式的傳銷,Docker一下在開發者中熱起來了。

2、鏡像倉庫和開源,誰都可以用,Docker鏡像庫非常豐富,誰做好一個鏡像都可以往公有倉庫推送,開發人員需要一個環境的時候,可以到Docker鏡像倉庫去查,有海量的選擇,減少了大量無謂的環境安裝工作。而通過開源,又開始大規模傳播。

我們再來回顧看看2010-2013年,大數據的名詞火遍大江南北,各行各業都在談大數據,但是落到技術上就是Hadoop,還記得2012年的時候,和Hadoop沒啥毛關係的VMWare也趕緊的做了一個虛機上部署Hadoop的serengeti,誰家產品要是和Hadoop不沾點邊,不好意思說自己是IT公司。Hadoop當年的熱度絕對不亞於2014-2015的Docker。而且時間上有一定的連續性,2014年開始,Hadoop熱度達到頂點,開始逐漸降溫,標誌事件就是Intel投資Cloudera。而Docker是從2014年開始熱度升高的。

再看Hadoop爲何在2010年前後開始熱起來,之前的大數據都是數據倉庫,是昂貴的企業級數據分析並行數據庫,而Hadoop是廉價的大數據處理模式,通過開源和X86廉價硬件,使得Hadoop可以大規模使用,而互聯網時代產生的海量數據雖然垃圾居多,但是沙裏淘金,也能淘出點價值,Hadoop正好迎合了這兩個需求,雖然Hadoop的無論是功能還是性能遠比MPP數據庫差,但做簡單的數據存儲、數據查詢、簡單數據統計分析還是可以勝任的,事實上,到目前爲止,大多數的Hadoop應用也就是數據存儲、數據查詢和簡單的數據統計分析、ETL的業務處理。

Docker和Hadoop的熱起來的原因不同,但是現象是差不多,開源和使用者羣體大是共同要素。

二、Hadoop從狂熱走向了理性

Hadoop最熱的時候,幾乎就是要replace所有數據庫,連Oracle也面臨了前所未有的衝擊,甚至Hadoop成了去IOE的Oracle的使命之一。在狂熱的那個階段,客戶怎麼也得做一兩個大數據項目,否則會被同行瞧不起,各IT廠商也必須推出大數據產品,否則可能成爲IT過時的典範,這不IBM成立了專門的大數據部門,打造了一個以Hadoop爲核心的龐大的大數據解決方案。Intel雖然是做芯片的,但是大數據必須摻和,成立大數據部門,做Intel Hadoop 。連數據庫的老大Oracle也憋不住了,做了個大數據一體機。

任何曾經狂熱的新技術都會走向理性,Hadoop也不例外,只不過,這個進程還比較快。隨着大數據的大躍進,隨着Hadoop的應用越來越多,大家發現在被誇大的場景應用大數據效果並不好,只在特定場景有效,Hadoop進入理性發展階段,比如一開始Hadoop據取代MPP數據庫,取代數據倉庫,取代Oracle,完美支持SQL等等均基本成爲泡影。這其實本來是一個常識,任何技術都有其應用場景,誇大應用場景,任意擴展應用場景只會傷害這個技術的發展。


這和目前無限誇大Docker的應用場景有異曲同工之妙,比如Docker向下取代虛擬化,Docker向上取代PaaS之類,幾乎成了雲計算的唯一技術,這種論調一直充斥各種Meetup/論壇。雖然技術從誇大到理性需要時間,但是理性不會總是遲到。

Hadoop技術在發展,大數據的相關技術也在發展,Hadoop一直被詬病的處理速度慢,慢慢的被Spark/Storm等解決,特別在流數據處理領域。

所以,時至今日,人們對Hadoop的態度趨於理性,它只適合在特定場景使用,可是,當初那些在Hadoop不太適用的場景使用了Hadoop的客戶交了學費的事情估計沒人再提了。Docker估計也是一樣的,總有在誇大的場景中交學費的客戶,可是隻是客戶沒眼光嗎?和無限誇大某種技術的佈道師無關麼?

再反觀大數據和Docker在全球的發展,在美國,無論是Hadoop和Docker並沒有像國內這麼狂熱過。Hadoop技術來源於Google,成型於Yahoo(DougCutting),而炒作卻是在國內。同樣,Docker也在走這麼個流程,在美國沒有這麼多的Docker創業公司,主要就是Docker,然後各大廠商支持,創業公司和創投公司都知道,沒有自己的技術或是技術受制於人的公司不值得投資,既然Docker一家獨大,再去Docker分一杯羹會容易嗎?

而國內二三十家的Docker創業公司,沒有一家能對Docker/K8s源碼有讓人醒目的貢獻(反倒是華爲在K8s上有些貢獻),但是都在市場上拼嗓門,不是比誰的技術有潛力最有市場,而是比誰最能佈道誰嗓門大,誰做的市場活動多,某Docker創業公司據說80%的資金用在市場宣傳、Meetup上,而且不是個別現象,是普遍現象。反應了某些Docker創業者的浮躁心態。

三、Hadoop生態圈的演進

Hadoop興起和生態圈緊密相關,Hadoop的生態圈的公司主要是兩大類——


第一類是Hadoop的各個發行版公司,如Cloudera、HortonWorks、MapR、Intel、IBM等,第二類基於Hadoop做各行業的大數據項目實施或大數據應用和工具,如Tableau、Markerto、新炬、環星等

隨着大數據的熱度提升,Hadoop生態圈的兩大類公司蓬勃發展,但是市場有限,市場還沒有成熟,競爭就很激烈,特別是第二類做項目實施的企業,那就只能靠燒錢。

問題是如果是消費者市場,通過燒錢先把市場佔領,然後再通過其他手段收費盈利,比如淘寶通過向賣家收費盈利,滴滴打車之類的未來可以通過讓司機花的米搶好單、大單可以實現盈利,而Hadoop是企業級市場,通過虧錢樹立案例標杆,然後複製,這條路走的並不順利,因爲複製案例的時候會碰到競爭,一開始就低價做爛的市場,客戶不願花錢,總有低價者搶市場,複製案例往往變成低價競爭。低價競爭很難把項目實施好,基本是個多輸的模式,客戶並沒有得到自己預期的大數據項目價值,或是打折的價值,實施廠商沒賺錢,留不住人,招不到好的人才。

這類生態圈公司的發展趨勢是最終會留下少數幾家公司,規模做大,其他的公司會被淘汰,現在還沒有走出各個集成商苦苦支撐的時代。

對於第一類做發行版的Hadoop廠商,在燒錢進入後期階段,日子也開始不好過,因爲項目實施廠商的大多選擇不用發行版,只用開源,發行版和相應的付費支持很難賣出量,進而難以盈利。資本市場成了繼續燒錢的救命稻草,Hortonworks第一個上市, 16元的發行價,大數據概念蜜月期一過,要開始考察業績的時候,股價步入漫漫熊途,到現在只有9元左右。CloudEra雖然沒有上市,但是已經融資12億美元,目前在Hadoop發行版,CloudEra和Hortonworks佔據了最大的市場,特別是CloudEra的市場更大,即使CloudEra有巨大的Hadoop市場和技術優勢,CloudEra到現在也不敢上市。

現實很殘酷,CloudEra的盈利並不讓人滿意,現在上市,資本市場不會給出個好股價,但是CloudEra的困境是如果遲遲不上市,大數據熱點成爲非熱點,資本市場那就考察的是盈利能力—市盈率,不是市夢率了,而CloudEra的盈利能力在目前狀態能讓資本市場滿意嗎?雖然Hortonworks上市的時候趕上了市夢率。

技術的演進同樣在影響發行版的Hadoop廠商,Hadoop從1.0到2.0,技術有較大的改進,Yarn取代Map-Reduce,原來衆多的發行版面臨着自己對Hadoop 1.0的定製如何合併到Hadoop 2.0去的問題,定製的越多,合併的難度越大;定製的越少,和開源沒啥區別,體現不出價值,這是發行版面對的兩難問題。

Hadoop 1.0到2.0的升級成爲一個重要的轉折點--- Hadoop從1.0到2.0直接導致Intel的發行版出局,Intel的Hadoop部門裁撤銷,Intel廢棄自己的Hadoop轉而直接投資CloudEra。因爲Intel對Hadoop 1.0做了很多的定製、優化,這些定製優化本來一直是Intel宣稱的競爭技術優勢,現在1.0到2.0,立馬優勢變劣勢,定製越多合併到新版本越難合併,而Hadoop不是Intel的主業,所以Intel權衡利弊,及時止損,放棄了自家的Hadoop,選擇投資CloudEra。對Intel Hadoop客戶而言,要吸取的教訓是買產品一定要買賣家的核心產品,即使是大賣家,其邊緣產品很容易被拋棄,受傷的是客戶。這個道理其實是個大概率道理,可是吃這種虧的客戶不會絕跡。

Hadoop發行版廠商面臨一樣的趨勢潮流——留下不超過3家Hadoop發行商,其他的都會被淘汰。

再看大數據的應用和生態圈的公司,雲端營銷服務公司Marketo,13元的IPO價格,趁着大數據的東風,很快就飛到了45,隨後熊途漫漫,在2016年2月份跌破發行價。和HortonWorks相比,Marketo是大數據的應用,是能通過大數據直接產生營收的,而且業績也確實比Hortonworks要好,但是迴天無力,持續虧損,隨後被私募公司Vista Equity Partners收購。Tableau其實和Hadoop關係不大,當初接Hadoop東風股價飆起,現在也是熊途漫漫。

四、Docker的生態圈

歷史不會簡單的重複,但是有驚人的相似!

Docker的生態圈和Hadoop的生態圈類似。

Docker的生態圈也分爲兩大類,第一類就是Mesosphere\Google這類做Docker的企業運行集羣管理,類似於Hadoop的發行版的廠商。第二類是做Docker的項目實施或是做Docker開發者公有云,類似於Hadoop的項目實施廠商。

Docker的流行開始於開發者,也是在開發者中傳播,真正進入企業級生產系統的很少,由於Docker天生就是從開發者起家的,缺乏進入企業的基因,Docker的設計就不是運行於企業級環境下。


可是從開發者身上很難賺錢,這已經成爲共識了,如果想從開發者身上賺錢,那開發者都跑路了。Docker也意識到這點,所以Docker在2016開年就提出,要進入企業級—“Ready for Production”,但是理想是理想,理想和現實之間需要跨越巨大的鴻溝。

Docker進入企業級的需求,造就了第一類的生態公司,主要就是Mesosphere\Google和Redhat三家,Mesos本來就是部署、集羣管理,之前部署Hadoop大數據、批處理、ETL之類的,隨着Docker東風吹來,馬上支持部署、管理Docker集羣,再加一個Marathon管理長週期任務,就可以實現部署應用的CaaS,雖然離PaaS還有很大距離,缺乏很多PaaS功能。

首先要深刻理解PaaS。
PaaS的P是Application Platform,是應用平臺As a Service,是着眼於應用和應用平臺。

很多人往往把PaaS和CaaS混淆,Container As A Service是容器即服務,只管提供容器和容器管理,並不管容器裏面跑的是應用還是數據庫或是數據應用,所以CaaS要弄出個編排,而PaaS並無編排一說。如果只是提供容器,和IaaS其實並沒有太大的區別,只不過把應用從虛機轉移到容器裏來。

PaaS的設計原理和方法論是要實現應用的零運維,通過平臺本身來監控應用,而不是傳統的思維方式,傳統的運維是要針對不同的應用去不同的監控、不同的調度、不同的故障恢復,所以運維成了救火。

PaaS通過平臺本身來監控應用、監控容器、監控虛機、監控物理機,應用不用去管監控的事情,無論是應用故障、容器故障、虛機故障還是物理機故障,統統故障自動恢復,應用實現一鍵部署,資源實現彈性伸縮。運維的三大任務:應用和系統部署、升級,故障恢復,根據業務的資源分配,這三大任務在PaaS全自動化。

當然,要達到這個目標,你的應用要符合十二要素,要向雲原生應用靠近。退一步講,即使是傳統應用,不做改造,搬到PaaS下雖然不能100%達到上述的零運維,但是也可以達到相當程度的運維自動化。

PaaS和CaaS的另外一個根本區別是,PaaS區別對待應用和服務,應用運行在容器中,實現零運維。服務就是比如數據庫、消息中間件、大數據、緩存等,並不適合運行於容器中,PaaS把這些服務部署在虛機中,服務的彈性伸縮要求並不強,不像應用彈性伸縮的要求比較強,誰會去把一個mySQL或是Oracle數據庫的集羣在運行中彈性擴展一下?

服務沒必要放在容器中,服務更多的是需要備份、調優等操作系統相關的運維,而且往往會涉及到操作系統內核的調優,而應用是往往操作系統無關了,所以放在容器中。在容器中做操作系統內核參數調優是有風險的。通過區分應用和服務,並且把應用放在容器中,服務放在虛機中,自然的消除了編排的需求。容器是個革新性的技術,但是不是任何場合都適用,作用企業應用,應當在不同的場景選擇不同的技術,而不是一個技術包攬全部。

Borg是谷歌公司很早以前就在使用的內部容器管理系統,隨着Docker的興起,把Borg的精華部分抽取出來,支持Docker,弄出了個Kubernetes,但是Kubernetes出生於複雜的Borg系統,框架就比較大,而且複雜,而Docker進入企業,總是從小到大的過程,企業和互聯網公司不一樣,互聯網公司可能經過幾年的積累,已經有成千上萬個容器需要管理,而且運維人員就是公司的主要資源。對於企業公司而言,把Docker弄到生產環境,都是嘗試性的,一開始就弄一個超複雜的系統,哪個企業都吃不消,所以Kubernetes進入企業之路並不順利。

特別是國內,在2015年大多第二類公司Docker項目集成公司都選擇Mesos,畢竟Mesos簡單易上手,一般客戶也要不了Kubernetes那麼複雜的功能來管理一個初始的小集羣,所以在2015年國內鮮有采用Kubernetes的企業客戶,當然2016年形勢逆轉,K8s成爲熱點了,因爲大家發現Mesos不是正宗的Docker集羣管理,K8s從一開始就定位到容器集羣管理,雖然技術複雜了一點,但是2016的Docker生態圈創業公司很多是海歸,更從技術根源上認可K8s對Docker的集羣管理,加上這些創業公司不遺餘力的宣傳,K8s在2016年逆襲了,成爲最熱的Docker集羣管理軟件,這其實也說明了技術最終能夠被發現。

而Redhat就直接用kubernetes加一些自己的功能來做PaaS雲解決方案。Redhat自己宣傳也是Docker+kubernetes=Openshift,那Redhat的Openshift其實自己可以掌控的東西很少,把幾個不是自己主導的開源的產品組合成一個OpenShift,和國內的山寨思想沒什麼太大區別,也體現不出自己的價值,既然是山寨思想,那山寨的害處馬上就體現出來了,一旦正宗的產品推出來,山寨之路就艱難了,而且OpenShift又是Redhat的邊緣產品,記住前面的法則:買產品一定要買公司的核心產品。

Docker第二類生態公司,做企業Docker項目實施的,在國內衆多,包括:DaoCloud、數人云、CSphere、雲雀、迅達雲、高偉達、宇信、飛致雲、時速雲等,其中有些一開始嘗試做開發者公有云PaaS,但都證明不能盈利,這其實已經在新浪、盛大公有云證明是不成功的,有多少開發者或是中小軟件公司願意花錢在公有云上開發呢?這個市場還太小,不足以養活開發者公有云。

五、Docker公司的戰略野心受生態圈狙擊

Docker本來是做PaaS的公司,原來稱爲DotCloud, 其提供了類似IDC的服務,爲客戶提供PaaS服務,包括Web、Application、Transaction、Database等服務。但PaaS雲運營並不成功,DotCloud痛定思痛,技術轉型到做容器,而且一開始就開源,吸引大量的開發者使用。
隨着Docker在開發者中越來越流行,2013年10月,DotCloud乾脆換名爲Docker公司,2014年8月 Docker 宣佈把平臺即服務的業務「dotCloud」出售給位於德國柏林的平臺即服務提供商「cloudControl」,Docker開始專心致志做Docker。

於此同時,Docker也開始融資準備把公司做大,適應Docker的發展勢頭。Docker從2013年開始,經過ABCD四輪融資,累計超過1.5億美元的融資,Docker融資這麼多,那麼一定要上市IPO,才能給投資方以回報。而上市是需要業績的,既然開發者市場是幾乎不可能賺錢盈利,只能轉向企業級市場,一旦啓動進入企業級市場的進程,就必然會擠壓Docker生態圈的第二類廠商——做Docker集羣管理的廠商們。


Docker進入企業環境,第一個就是要運行Docker鏡像,而且不是一個兩個鏡像,要運行一個集羣,這樣Docker集羣的部署、管理、調度就成爲Docker進入企業級第一需求。

如下圖是Docker的發展歷程,下面是Docker容器的進展,上面是CaaS(Container As a Servie)解決方案的併購和進展。有心人很容易發現,從2014年底開始,Docker密密麻麻的收購,全都投入在CaaS,無論是收購還是從產品到解決方案,可見Docker在CaaS上了大賭注。


Docker進入企業級市場有比較宏大的目標,2014年10月,Docker收購持續集成服務商 Koality,Docker把Koality在企業市場方面的成熟經驗引入到 Docker Hub企業版本中,瞄準的是企業市場。同月,Docker收購了總部位於倫敦的Orchard Laboratories,進入複雜應用編排功能的企業市場。2014年底推出Docker Machine\Swarm\Compose,2015年對這三個產品持續升級。

2015年3月,Docker收購SDN公司SocketPlane,解決Docker集羣的網絡問題。同月Docker收購了用於Docker管理的開源圖形用戶界面工具Kitematic,自動化了Docker安裝和配置過程。2015年 10年,Docker收購Tutum,補充Docker Hub,補充對Docker運行時的支持。進入2016年,Docker再次動作頻頻,2016年1月,Docker收購Unikernel Systems,進入OS領域,把Docker容器帶入最簡OS內核。如下圖,打造適合運行容器的最簡OS, 整個容器所佔的資源進一步減少,從而讓機器跑的更快,把容器的價值發揮到極限,至於這是否適合企業應用還需要驗證。


向下,Docker侵入OS領域,向上,Docker擠佔CaaS市場空間。

2016年3月,Docker收購Conductant,入主Aurora,根據如下Docker的規劃,Aurora直接和kubernetes以及Marathon競爭,特別是和Mesos的架構完全對應, Docker Aurora+Swarm直接和Marathon+Mesos競爭。使得Docker Swarm從小規模集羣管理,擴展到大規模Docker集羣管理。


在這個Docker提供架構圖,可以清楚的看到沒有了Mesos,而是Docker Swarm+Aurora直接取代Mesos+Marathon。同時,我看看下面來自Docker的博客(https://blog.docker.com/2016/03/docker-welcomes-aurora-project-creators/)
“There are manycommercial distributions of Mesos, but none of them incorporate Aurora. Webelieve that is a wasted opportunity. We plan on incorporating the best ideasfrom Aurora into Docker Swarm, and are exploring integrating Aurora as anoptional component of the official Docker stack.”
翻譯過來:

“雖然Mesos擁有多款商業發行版,但其中沒有任何一款受到Aurora的啓發。我們認爲這實在是一種巨大的浪費。我們計劃將Aurora中的各類卓越思維成果引入Docker Swarm,並正在嘗試將Aurora作爲Docker正式堆棧的可選組件之一。”

Docker已經在抱怨有太多的Mesos商業發行版,搭了Docker便車,已經在賺Docker進入企業級市場的錢,而Docker自己的產品居然還沒開始賺錢。

是可忍孰不可忍!

2016年2月,Docker公佈了其DDC(Docker DataCenter)的架構圖和報價,如下圖,藍色部分是Docker的CaaS解決方案,青色部分是還需要第三代的產品或開源產品來補充形成完整的解決方案,青色部分所佔比例還不小,可見Docker的CaaS上要走的路還很長,Docker的這個CaaS有不少模塊是前面收購來的。既然是商業發行版,DDC也保留了部分模塊不開源,走的甚至比CloudEra的發行版更遠。Docker也很快給了個並不便宜公共訂閱報價,難道是Docker在盈利上有急切的需求?


六、Docker生態圈的演進請輸入

Docker在2013-2014年專注於把容器做好,沒來得及顧得上企業級市場,Mesosphere和Google瞄上了這個市場,同時Redhat也把自己的PaaS推倒重來,準備用Docker+kubernetes。2014年底,Docker已經準備進入企業級市場,推出Docker Machine,Swarm和Compose。

Docker作爲Docker的宗主,着眼於Docker市場環境最有利潤的Docker生產環境集羣管理是很自然而然的,我們再來分析這個市場三隻早起的鳥兒:Google、Mesosphere、Redhat。

一旦Docker進入企業級CaaS市場,Google第一個就感受到了這個壓力。


Google無疑是最有技術敏銳性和市場敏銳性的,早早的看到了Docker企業級市場的企圖心,所以Google是第一個支持Docker的競爭對手----CoreOS的Rocket容器,2014年四月份谷歌風險投資公司牽頭對CoreOS進行了1200萬美元的投資,目標明確---對準docker。Google不再是Docker+ kubernetes,而是容器抽象+ kubernetes。

Google對容器層進行了抽象,使得kubernetes即能支持Rocket,也能支持Docker,而Rocket和Docker有很大的不同,kubernetes對此進行了折中,不再對所以的Docker的功能支持,只支持kubernetes抽象出的容器功能,如果Docker自己的功能不在kubernetes抽象的容器功能之中,kubernetes選擇不支持。最典型的是libnetwork/CNM,kubernetes認爲這是Docker的特定功能,不予支持,Google自己搞了一個CNI。所以kubernetes和Docker走在分道揚鑣的路上,距離越來越遠。

除了支持CoreOS,Google更是聯合容器業界相關的廠商,組成OCI(Open Container Initiative)。業界對Docker在容器領域一家把控早有怨言,所以OCI一成立,就得到熱烈響應。和普通的聯盟或標準化組織不一樣,OCI成立之初就定下目標—容器標準化,包括容器引擎的標準化實現—RunC,定個標準化規範容易給各方鑽空子,但是做一個標準化的實現,就可以在相當程度上實現真正的容器統一。Docker眼看OCI實在太熱烈,不得不折中考慮,加入OCI,實現RunC。

但是總是心有不爽,雖然RunC發展很快Docker從1.11開始就採用了RunC的引擎,但是這不就開始和Google也業界大佬開撕了,過程很簡單,Kubernetes的KelseyHightower說不要Docker引擎就可以跑Docker鏡像,Docker CTO Solomon Hykes馬上說,不用Docker引擎, 10%的運行會有問題,然後就扯到OCI,Docker說OCI是個僞標準,立馬得到無數的磚頭。

Docker也加入了OCI,對RunC的貢獻也不小,現在出爾反爾,現在看到Docker可能會受OCI/RunC的牽制影響,立馬不管臉面了,利益第一。

但是技術潮流是無法一家控制的,OCI/RunC作爲業界各大廠商制約Docker的標準遲早會越發展越好,容器並不是什麼可以壟斷性的技術,或者說容器本身的技術含量並沒有高到其他廠商做不好,只不過Docker在合適的時間點點燃了一個乾柴烈火的市場。


Google對Docker容器的制約,不止體現在OCI容器層面,這不,前兩天Google宣佈和Mirantis的合作,K8s直接支持OpenStack,意味着K8s除了可以管理容器,還會延伸到管理虛機集羣,在這個架構下,Google弱化Docker容器的的意圖很明顯。

由於Google早早的對容器進行抽象,可以預見,即使脫離Docker生態圈,kubernetes依然有其市場,而且主要是大型容器和虛機部署的市場。


再說Mesosphere。2016年上半年遲鈍的Mesosphere終於意識到Docker的野心和意圖,開始嘗試脫離Docker,在新的Mesos Containerizer中支持脫離Docker Daemon建立容器,爲下一步支持Rocket/RunC做準備。

Mesosphere相當於而言是比較不敏感的,一直跟着Docker跑,即使在Docker要做Swarm時,而且Docker已經做了Swarm仍然不敏感,終於Docker已經明確的對Mesosphere通過發行版賺錢表示了明顯的不滿,可以理解,Docker自己花這麼多資源做出一個Docker和相應生態,還沒開始賺錢,搭車的先賺錢了,換誰誰也不樂意。2016年2月Docker發佈DDC(Docker DataCenter)和報價,已經非常明確了Docker要進入企業級市場。

2016年上半年遲鈍的Mesosphere終於意識到Docker的野心和意圖,開始嘗試脫離Docker,在新的Mesos Containerizer中支持脫離Docker Daemon建立容器,爲下一步支持Rocket/RunC做準備。

Docker進入企業級市場,第一個碾壓的就是Mesosphere。一方面Docker通過收購Conductant獲得Aurora,未來必定會合併到DDC中,DDC完全可以覆蓋Mesosphere的DCOS在Docker集羣管理上的功能,而且Docker還有一招,未來只提供Swarm的API,封閉或是大幅改變Docker API,那麼Mesos就只能調Swarm的API,Swarm本來就和Mesos有很大的重疊,如果Mesos再通過Swarm去管理Docker集羣,那Mesos的價值可能小於功能重疊帶來的複雜性。當然Docker是否會祭出這個大招讓我們拭目以待,雖然在Docker的新的架構圖已經有此規劃。

在這種生態環境下,用戶的選擇是最難的,已經選擇了Docker+Mesos的用戶,必然會面臨未來繼續走Docker+Mesos的路,還是壯士斷腕,切換到正宗的Docker DDC,但DDC還不成熟,目前階段還不適合選擇。

而Docker+Mesos是註定未來很難升級,越往後越邊緣化。


再看Redhat,2014年的時候看到Docker火起來,Redhat見異思遷,馬上拋棄自己的OpenShift V2的整體架構,包括拋棄原有應用容器Gear,全面採用Docker替代Gear,同時用kubernetes替代原有的容器管理。如此革命式的改造,完全不考慮前後的兼容性。

這導致已經部署在OpenShift V2的應用遷移到OpenShift V3非常困難,雖然提供了一個遷移工具,但是Redhat自己都不敢用,到目前爲止,Redhat的OpenShift公有云還是OpenShift V2,在給客戶推銷OpenShift V3的時候自己不從V2升級到V3,一定是難度極大,否則拼了命也要升級,”自己的狗糧自己得吃”。

Redhat在OpenShift V3技術架構的選擇顯得魯莽,核心技術是Docker和kubernetes,而Redhat對這兩個技術都沒有掌控,一旦Docker的發展或是kubernetes的發展和自己的戰略目標不一致,可能還得推倒重來,又是一次”見異思遷”,目前就實際的遇到了這個問題,Docker要發展自己的DDC,和kubernetes競爭,而kubernetes已經對容器進行了抽象,不再支持Docker的特定功能,Docker和kubernetes已經處於分道揚鑣的階段,未來只會越走越遠,而Redhat“只能眼睜睜的看着你卻無能爲力”,即無法說服Docker,也無法影響Google。

另外,既然Docker要進入企業級容器集羣管理市場,那OpenShift就必然和Docker存在競爭,Docker因爲絕對的掌控了Docker容器,在競爭中有天然的優勢,這種優勢隨着Docker的升級和DDC的升級會與日俱增。到底是選擇正宗(奧迪)還是山寨(奧拓),客戶也容易陷入困惑。

七、開源技術也需要商業的成功

開源不等於免費,開源是一種商業模式,一個開源組織和開源項目要想生存下去,最重要的基礎就是普遍被使用,不然很快就會被競爭者替代。

一個軟件被普遍被使用之後,還需要因此衍生出相關服務,團隊可以通過這些服務獲得比較好的收入,商業模式就成型了,沒有商業的支持的開源是很難成爲一個成熟、商業可用的技術。就拿Linux來說,Redhat和Suse Linux作爲比較成功的Linux商業化,通過發行版和技術支持獲得了商業成功,反過來推動了Linux的發展。Linux持續有開源路線和商業路線,商業客戶需要商業的版本和支持,有Redhat和Suse等提供。開源的Linux如CentOS,CoreOS等。

反面的例子就是OpenSSL,去年暴露出“心臟出血“漏洞,大家發現就一個人在維護在OpenSSL,也沒人捐錢,Theo de Raadt-- OpenBSD項目的創始人說OpenSSL的代碼”令人作嘔“,主要原因就是沒有商業的支持。這不最近又爆出新型高危漏洞。

我們再看看Docker的生態圈,無論是Docker,還是Mesosphere,還是Google,都還沒有在Docker開源生態圈獲得商業成功。而開源技術終將走向商業,包括Docker,必然面臨企業市場挑戰,微軟奮鬥了幾十年其企業市場跟甲骨文SAP比起來仍然望其項背,這需要積累。

面對二三十家Docker創業公司,投資人是需要這些創業公司能商業成功的,而Docker本身技術沒有成熟,特別在Docker集羣管理、資源調度等生產應用方面。Docker生產使用都成熟,要Docker商業成功,不會是一個短期的過程。而docker和mesos這兩家核心生態圈的公司到今天爲止離盈利還非常遠,那國內這些二三十家外圍生態圈的創業公司短時期內商業成功幾乎不可能。

對於想在Docker上嚐鮮的企業來說,要認清開源不等於免費。

八、Docker生態圈的推論

Docker進入企業級市場,有優勢,也有劣勢,優勢是挾Docker的大量開發者,劣勢是沒有做過企業級市場,開發者市場和企業級市場的做法完全不同,微軟從消費者用戶拓展到企業用戶化了十多年的時間,在企業市場並沒有取得和消費者市場一樣的成功。

做消費者市場,只要把產品做好,而做企業級客戶,要一個一個去談,每個客戶的需求都不一樣,需要一隻龐大的銷售、定製、支持隊伍。Docker公司到目前爲止也就100多人,做企業級市場沒有幾千人的銷售、支持隊伍是很難打開全球市場的。100人到數千人,管理模式、業務模式都需要幾次轉型。而Docker公司目前也只是提供DDC的訂閱License和支付服務,並不提供面對面的銷售和定製服務

Docker公司進入企業級市場在技術上有最大的優勢,撬奪Mesosphere\Google\Redhat的CaaS市場還是有相當的技術優勢。通過對Docker API的控制、升級,可以完全影響上面所有對Docker容器集羣管理的軟件,也許3-5年,Docker的企業級產品會有相當的成功,但不會在2016年。但也許3-5年後,CaaS(Container As a Service)會有新的技術演進。

2016年,作爲Docker集羣部署管理的生態圈公司:Google kubernetes\Redhat OpenShift\Mesos,面臨Docker DDC的不平等技術競爭,會承載巨大的壓力,他們會聯合起來反制Docker公司。他們的應對就是釜底抽薪,弱化Docker容器,儘快讓RunC成熟,在一定程度上取代Docker引擎。另外,直接就是支持虛機,不再受制於Docker,而是直接在企業級市場全面競爭。

和Hadoop生態圈的第一類公司類似,2016-2017年,可能有Docker集羣管理的公司會逐步退出這個市場。


事實上,無論是Google還是Mesos,都已經走在和Docker分道揚鑣的路上。如果我們和大數據對比一下,Docker有點像CloudEra,技術領先; Redhat像Hortonworks,先上市再說,Redhat是先把產品上市,Hortonworks是先資本上市。Google有點像Intel投資Hadoop,不屬於主業,在副業上也投資。Mesos有點像MapR,總是不在覈心圈子裏,越來越式微。

2016年.作爲Docker CaaS私有云項目實施公司,包括:Rancher、才雲、數人云、CSphere、雲雀雲、Hyper、DaoCloud、有容雲、好雨雲、輕元科技、迅達雲、飛致雲、時速雲、精靈雲、領科雲等。和Hadoop的第二類項目實施的生態圈公司走過的歷程類似,2016-2017年,各大Docker CaaS項目實施廠商是陷入低價血戰的時代。同時,技術方向的選擇和標杆客戶案例非常關鍵,如果技術方向選擇不對,所選擇的Docker集羣管理軟件被邊緣化,那麼技術的積累價值會大幅打折,客戶的標杆也可能會成爲反例。最典型的就是選擇Mesos的技術路線的,目前已見頹勢。也有的抱Docker大腿不放,選擇純Docker的技術線路,容器集羣管理也用Docker Swarm,Docker Swarm有可能會一直很難成熟,特別是和K8s相比,存在巨大的技術風險。


2016年,有些企業級客戶開始選擇Docker做CaaS,但是客戶面臨最大的問題是戰略性的問題,到底選擇哪個Docker集羣管理軟件,在Docker紛繁複雜的生態圈裏做出正確的選擇並不容易,考驗客戶的技術眼光,選擇了一個短命的產品以後再糾正並不容易。

其實,Hadoop的客戶走過這樣的困境,我想起上海某政府客戶,在2012年選擇Intel的Hadoop實施信息共享項目,成爲Intel的全球案例,2013年10月上線,2014年Intel放棄自己的Hadoop,裁撤了幾乎所有的Hadoop團隊,這時數據和系統都已經上線半年多了,對於一個已經上線提供服務的Hadoop,再去換一個Hadoop,難度可想而知,數據遷移和應用遷移不一樣,難度高出許多。如果不換Hadoop,永遠停留在Intel的Hadoop 1.0上又失去了採用開源軟件的意義,採用開源軟件很重要一點是能隨開源的成長而成長。面臨這種尷尬的時候再次提醒我們產品和技術選擇的重要性。推導到Docker企業應用,早期嚐鮮的企業客戶把Docker集羣管理調度部署到生產環境,會不會碰到這種尷尬呢?

目前國內的Docker創業公司超過20家,都想進入企業市場,導致異乎激烈的競爭。而過於激烈的競爭,帶來一個畸形的模式————大家主要把錢和資源化在吸引眼球上,而不是把主要力量放在把產品做好(國內的OpenSatck公司何嘗不是如此!)。

有個銀行客戶,準備測試一下Docker,居然超過十家Docker創業公司主動要去測試,據說預算只有幾十萬。

20多家Docker創業的小公司,少的十幾個人,多的幾十人,上百的還很罕見,畢竟投資人的錢燒起來很快,搞個上百人的,一年的工資支出可能就幾千萬。20多家小公司,怎麼讓客戶知道你?這是Docker創業公司的面臨的第一個困境,解決辦法就是搞市場活動,據說有的公司居然80%的資金都花在市場活動上,常用在酒店給客戶講方案的市場活動不湊效,那就搞技術Fans的Meetup,大家去看看今年的Docker/K8s/Mesos的Meetup多如牛毛,每週都有。Meetup就一定有效嗎?對企業級市場來說,並不完全有效,參加Meetup的都是工程師,不是企業項目的決策人,工程師想用,企業決策人還沒看清暫時不用是普遍現象。

一方面,把投資人的錢花在各種市場活動上,另外一方面,Docker/K8s/Mesos作爲開源技術,這些創業公司對Docker/K8s/Mesos的代碼貢獻很小,僅僅有一兩家對代碼有微量貢獻,大多數對Docker開源代碼是零貢獻,對於沒有對開源有多少貢獻,希望從開源項目賺錢,這多少有點投機取巧,而且,Docker/Google都還沒有從自己主導的開源項目賺錢,搭便車的先賺錢,商業上合理嗎?

中國目前的容器市場能支撐的了20多家Docker創業公司嗎?而這些創業公司絕大多數拿的是投資人的錢,投資人的錢也不是風颳來的,天使輪投資可以只要個Idea,但到A輪/B輪,怎麼也得看點數據,你是拿了幾個單,還是有多少營收,有多少利潤,Docker創業公司面對的是B2B市場,不是B2C市場,B2C市場可以燒錢拉用戶,只要用戶量在持續增長,可以擴大虧損繼續燒。對於B2B市場,是要建立標杆案例項目再複製,標杆可以不賺錢,複製項目總得賺錢,而目前的殘酷現實是標杆項目大家打破頭,沒賺錢。你想複製的時候,20 多家的競爭對手還想着不要錢做自己的標杆,所以標杆項目的複製爲盈利項目幾乎不可能。

在目前這個市場形勢下,投資人再往下投多少會更謹慎一些,那在市場上花錢如流水的Docker創業公司,一旦錢花的差不多,並沒有達到預期數字,投資人在投錢上再謹慎起來,一些Docker創業公司的死掉只是時間的問題,也許年底就可以看到倒掉的Docker創業公司。


九、給準備Docker嚐鮮的客戶的建議

目前有些企業已經在採用Docker和相關技術,據觀察,有以下幾類企業:

1、 互聯網公司,比較早期就開始關注Docker技術,在互聯網應用中採用Docker容器,對應用的一致性要求不高,能接受數據的最終一致性。有的僅僅是容器,自己做管理,有的採用Mesos來管理集羣,也有采用K8s來管理Docker容器的。這類客戶應當佔了目前Docker用戶的95%以上。

2、 爲了混Docker圈子的重IT型公司,數量少,頻繁出現在各種Docker市場活動中介紹成功經驗。
這些企業有個特點,喜歡在衆多的Docker市場活動上介紹使用Docker的成功經驗。作爲一個企業,使用新技術可能可以造就新的競爭力,但是在各種Docker的市場活動中介紹成功經驗好像和公司的核心競爭力並不完全一致,這些公司的核心競爭力肯定不是是用Docker而帶來的。

3、 傳統企業在技術創新中採用Docker,取代了很好的效果。
這種企業不多,企業的IT領導人有很強的技術駕馭能力,能夠吸納新技術。通過試點採用Docker成功以後,逐步推廣,取代了比較好的效果。

分析這些Docker的使用者,很容易發現在真正企業級環境使用不多,在美國也如此。主要還是互聯網公司在使用。

對於企業客戶而言,要採用Docker,一般是兩種方式:要麼選擇Docker相關公司來實施,要不然自己基於Docker定製,這種方式工作量太大,需要巨大的團隊,對企業來說不合適。如果選擇Docker相關公告,目前選擇這些Docker創業公司是有巨大風險的,一方面他能生存多久很難說,考慮客戶的選擇眼光。

第二,如果做Docker項目選擇這些公司的產品來實施,對於技術力量稍微強一點的Docker創業公司,他會自己做一些包裝定製,把自己的產品提供給客戶,但是風險在於,對於定製過的產品,Docker/K8s/Mesos/Swarm的後續發展非常快,這些開源版本一升級,你就得跟着升級,定製了以後升級並不容易,往往會要去改動代碼或是配置。作爲客戶如果採用開源的產品,而不跟着升級,那就失去了採用開源的非常關鍵的一個價值,開源的發展一開始是不成熟的,如果不能跟着開源逐漸成熟,那選擇早期的開源不升級往往是很難達到效果。
也有小的創業公司,對Docker幾乎不做定製,甚至界面都不改,就是把環境部署起來,那對企業級應用來說,過於簡陋,對使用者要求很高,很大程度上是達不到應有效果的。

對於企業級客戶準備採用Docker,鑑於目前Docker在企業級的生產環境應用規模很小,成熟度有待提高,而且對於企業級應用很難在Mesos/K8s/Swarm之間做選擇,一旦技術路線選擇錯誤,後面調頭重來成本非常高。而且這麼多小的Docker創業公司,能不能生存下去,長期提供技術支持,也是需要考慮的問題。

企業要綜合考察IaaS/CaaS/PaaS,選擇相對成熟的技術,相比而言IaaS和PaaS均比較成熟,基於Docker的CaaS還沒有定型,還在成熟的過程中。要結合企業的實際需求,對於潮流技術,先小規模驗證,體驗取得的實際效果,分析存在的隱患,再做綜合決策不遲。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章