1. 程式人生 > >Docker技術商業落地的思考

Docker技術商業落地的思考

Docker的火熱,催生了人們對於其商業模式的探討,雖然目前Docker還有很多有待完善之處,但這並不妨礙人們對於Docker的追捧,但我們也應理性地看到,Docker並不是萬能藥,對其商業模式的探討,將有力促進Docker的健康發展。

Docker技術雖然剛問世3年,但其發展如火如荼,受到大量企業客戶和個人開發者的追捧,作為一項開源技術,Docker有一點和Java很像,那就是它們都是標準。作為標準的企業級應用開發語言,絕大多數企業內部的業務應用都是用Java開發的,而Docker正在成為應用封裝的標準,未來企業內部的業務應用大多會封裝成Docker的形式。

標準化最大的好處是帶來效率的提升。Docker經常被類比為集裝箱,集裝箱的出現極大地提升了貨物裝載的效率,集裝箱把貨物的封裝形式標準化,為碼頭、貨輪、卡車等貨運全產業鏈各環節都帶來了標準化。類似地,Docker把應用封裝成標準化的容器應用,使應用的交付、部署、執行、更新等全生命週期的各個環節都變得標準,極大地提升企業的應用管理效率。

新一代PaaS平臺將成為Docker技術商業落地的最好形式

Docker技術火熱的同時,人們也在思考如何商業化的問題。本質上講,Docker技術如何商業化,跟其他任何開源技術商業化沒有區別。以Java技術為例,Java技術本身是開源的,Java的標準版、企業版也都是開源的,而基於Java的中介軟體是商業化的閉源產品,Java中介軟體提供了企業級Java應用的標準執行環境,解決了Java應用釋出(部署war包)、網路通訊(訊息佇列)、儲存訪問(資料庫連線管理)等多方面需求,方便了企業在生產環境使用基於Java開發的業務應用。Java中介軟體產品的商業化非常成功,比如WebLogic、WebSphere,直至今天,它們仍然在企業級應用領域佔有重要地位。與之相類似,Docker技術本身開源,基於Docker的PaaS平臺很有希望成為商業化產品。

通常人們把雲端計算分為三層,IaaS、PaaS、SaaS。IaaS管理資源,提供資源的彈性;PaaS管理應用,提供應用的彈性;SaaS面向服務,提供服務的彈性。過往十來年雲端計算的發展,主要集中在IaaS和SaaS領域,IaaS領域既有成熟的開源技術(OpenStack)也有商業巨頭(AWS),SaaS領域也有商業巨頭(Salesforce),但是PaaS領域一直髮展得不溫不火,其開源技術(CloudFoundry)和商業公司(Heroku)都沒有大獲成功。

Docker的出現把應用都變成容器應用,使得應用的打包、交付、執行方式變得標準了,這樣PaaS平臺只需要管理標準的容器應用,為容器應用提供全生命週期的標準化管理,比如打包、測試、分發、部署、執行、更新等。可以說,Docker的出現,使得PaaS平臺也變得標準了。在Docker出現之前,PaaS平臺要支援各種形式的應用,比如CloudFoundry要支援Java、Python、PHP等各種常見語言,從編譯開始構建應用,然後排程執行,由於應用沒有標準化,CloudFoundry為了支援各種應用的各種需求,變得異常複雜。Docker成為應用的標準封裝、交付、執行方式,推動了PaaS平臺的標準化,降低了PaaS平臺的複雜度,提升了PaaS平臺的易用性。這樣基於Docker的新一代PaaS平臺,由於更加標準化、更加輕量、更加簡便,極大地方便了企業使用PaaS平臺來落地Docker。新一代PaaS平臺很有可能成為Docker技術商業落地的具體產品形式。

基於Docker的私有PaaS平臺成為傳統企業新寵

Docker技術以PaaS平臺的形式在不同型別的企業客戶落地來實現商業化有不同的方式。比如提供基於Docker的公有PaaS服務,也稱為Container-as-a-Service(CaaS);再比如給企業提供私有PaaS平臺。下面主要討論後面一種方式。

對私有PaaS平臺有需求的客戶主要是傳統大型企業,比如金融、運營商、能源、廣電等。這些傳統企業使用私有云平臺並不是因為技術原因,主要是由於其行業監管緣故,資料比較敏感,從而無法使用公有云。近年來,傳統企業的業務場景發生了變化,其傳統業務逐步向網際網路相關業務轉變,傳統企業需要新一代雲端計算IT架構支撐其網際網路業務,對基於雲端計算的新一代IT架構需求越來越強烈。

傳統企業的現有IT架構主要還是基於國外的商業化軟硬體產品,這些產品搭建的IT基礎架構偏傳統,跟網際網路公司普遍採用的雲端計算架構相去甚遠。原因在於,傳統業務跟網際網路公司的業務場景不一樣,傳統業務的日常業務量相對恆定,業務本身不會經常變化,比如銀行網點每天的業務量不會變化很大,銀行網點自身的業務也不會總是變化,但是網際網路業務的業務量變化非常劇烈,比如淘寶雙11當天的業務量是平時的數十倍,而且網際網路業務的迭代非常快,像Google、Facebook之類的網際網路公司每週都會更新業務應用。傳統IT架構在設計之初就是面向業務量平穩的場景,因此無法支援業務量劇烈變化的場景,而不可預測的業務量暴增會導致傳統IT架構無法承載。再者,傳統IT架構也不支援業務應用頻繁變化的場景,傳統業務的更新頻率至少是以月為單位。

基於Docker技術的PaaS平臺能很好地幫助傳統企業支撐其網際網路業務。比如基於Docker的PaaS平臺能很好地提供應用的彈性,既支援業務應用彈性擴充套件,又支援業務應用快速迭代更新,非常適合網際網路業務場景。

2016年初,我們應某TOP3視訊網站的要求,以網路春晚搶紅包為模擬業務場景,設計了聯合解決方案。我們作為“中介軟體”層,以Docker的方式解決了高併發挑戰。一方面,我們擁有基於快取的解決方案,將依賴於資料庫的操作儘量置於快取中進行,提高應用的效能。另一方面,我們將底層計算資源組成一個資源池,向上承載核心業務,實現元件的橫向擴充套件。

此外,基於Docker的私有PaaS平臺提供的容器編排能夠幫助傳統企業客戶將複雜的業務應用以獨立的容器元件方式執行,滿足客戶對於穩定可靠的核心需求。藉助容器技術,這種私有PaaS平臺實現了應用的快速部署,使應用的交付變得標準,極大地消除技術部署的侷限性,提高客戶產品的交付及運維效率。上海證券交易所就是一個非常有代表性的客戶,上交所在自身業務系統進行了Docker化的探索和實踐,非交易類應用,包括軟體應用測試平臺、行情監控、行情播報等應用正在逐步往容器上遷移。通過將這些應用置於同一個容器平臺,上交所使測試平臺得以統一,解決了原先異構環境帶來的麻煩,資源池化使平臺擁有自動化運維的能力,減少後期人力駐場維護的成本,提高應用測試效率。

機遇與挑戰並存

傳統企業在落地私有PaaS平臺的時候也會遇到各種各樣的困難。

首先,傳統企業已有的IT系統和基於雲端計算的IT系統在管理和執行方面存在巨大的差異。傳統企業常見的IT管理組織架構分為開發中心和資料中心(可能還有測試中心)。開發中心滿足業務部門的需求,負責業務需求的實現;資料中心負責運維業務應用,保證業務穩定執行。對於金融、運營商這樣的傳統企業,保障業務穩定是最為重要的目標。因此,他們採用了嚴格、複雜的IT管理流程,開發中心和資料中心各司其職,進而保證業務穩定。這種嚴格、複雜的IT管理流程適用於傳統業務,但當傳統企業面向網際網路業務時,這種流程就不適用了。根本原因是網際網路業務處於高度競爭的狀態,業務需求頻繁變化,相應地要求業務應用能快速響應業務需求變化,但是傳統IT系統無法適應這種場景。

基於Docker的PaaS平臺,能幫助傳統企業實現敏捷開發、微服務架構、持續整合、持續交付、自動化運維等各種源自網際網路公司的DevOps方法,快速響應業務需求的變化。但是,傳統企業無法直接採用這樣一套PaaS平臺,因為如果要按照網際網路公司那樣實現DevOps,促進開發和運維的融合,肯定要改變傳統企業已有的IT管理方式和流程,包括組織架構的調整,這對於傳統企業絕不是一朝一夕就能做到的。針對這一困難,傳統企業也提出了雙模架構,所謂“雙模”是指傳統IT模式和新IT模式,其傳統業務仍然採用傳統IT模式來管理,其網際網路相關新業務採用新的基於雲端計算的IT模式來管理。這樣傳統企業可以基於全新的雲端計算IT架構來支撐其網際網路業務,並採用DevOps方法來管理新的IT架構。

再者,傳統企業對於業務的穩定性非常敏感,新技術的不穩定性是傳統企業採用新技術的最大顧慮。Docker技術本身還有一些不成熟和待完善的地方,特別是網路管理和儲存管理方面,還很不成熟。Docker目前的網路方案還非常新,缺乏大規模生產實踐,最新的Docker 1.12版採用的網路方式是Overlay,也是一種SDN。Docker的Overlay網路效能還不夠好,跟常見OpenStack的SDN方案還有很大差距。而且,目前Docker本身還不能對應用的網路頻寬使用進行限流,如果一個應用對網路頻寬消耗很多,有可能影響其他應用的網路使用。傳統企業,特別是金融客戶,對網路的需求比較複雜。金融有很多業務應用因為監管的需求,必須要做到網路隔離,保障業務應用的安全。此外,金融的很多業務應用需要保證資料的強一致性,在分散式環境下,比如同城兩資料中心雙活,這些強一致性的應用對網路的延遲有嚴格要求,如果達不到要求,那麼強一致性就很難保證。Docker的儲存管理就更弱了,目前只能支援把宿主機的目錄對映到Docker內部來實現持久化儲存。基於Docker的一些第三方儲存解決方案都很新,比如Flocker,雖然能提供分散式環境下容器應用的資料儲存、恢復、遷移,但都還沒有大規模生產實踐。

寫在最後

Docker作為雲端計算領域最為火熱的技術,畢竟只誕生三年左右,其未來的技術發展方向、商業模式等還都處在早期摸索階段,但Docker技術發展極為迅猛,正在被廣大企業客戶接受,相信很快就會進入成熟發展期,其技術發展方向和商業模式很快就會明確。