Docker從根本層面改變應用程序開發的四種方式
譯文Docker容器技術如何簡化應用程序的開發與部署、促進***實踐并催生新一代以應用為基礎的微服務機制。
Docker技術方案的發展勢頭簡直如同一場燎原烈火。這項新型Linux容器技術在不可阻擋的前進道路上引燃了一切事物,而其進展速度之快令很多從業人員根本無法跟上其迅猛的腳步。Docker不僅是有史以來人氣***的開源項目之一,同時也已經給人們構建應用程序的方式帶來了根本性變革。
基于Docker的應用程序背后所暗含的很多解決思路從嚴格意義上講已經與最初有所不同,但Docker確實給這些陳舊的的觀念帶來了新鮮活力。借助大量云部署實踐機制,Docker鼓勵技術人員采用像12-Factor應用那樣的最初實踐手段——這是一套專門用于構建基于PaaS應用程序的方案,目前也已經適用于基于Docker應用的開發工作。
我們能夠從Docker引發的時代浪潮中學到些什么?下面請大家隨我從四個角度加以思考。
1. 微服務架構的崛起
大規模整體性云應用程序開發已經步入絕路。如今它開始被微服務架構所取代,其特色在于將大型應用程序——及其全部內置功能——拆分成更小的、目的驅動型服務,并通過通用REST API實現彼此之間的通信。
早在上世紀九十年代就曾經出現過名為基于接口/組件架構的類似概念。時至今日,SOA(即面向服務架構)似乎已經獲得了相當良好的發展勢頭。目前微服務概念已經在Docker社區當中成為標準性模因,其主流趨勢在于將應用程序拆分成解耦、極簡且專門針對容器機制的設計方案,且只專注于實現一項任務。
完全密閉的Docker容器機制能夠為微服務應用程序創建出高效的分布式模型,從而順利實現微服務概念的現實轉化。這徹底改變了長久以來的云開發實踐思路,能夠將像Facebook及Twitter那樣的超大規模架構加以拆分并提供給規模更小的多個開發團隊。
2. 讓開發(Dev)與運營(Ops)聯系得更為緊密
盡管Puppet、Chef、Salt以及其它先行者已經在DevOps的探索中作出了相當的貢獻,但這些工具的主要活動舞臺仍然集中在運營團隊而非開發者群體當中。
Docker是***款能夠在開發人員群體中獲得與運營工程師同等認可效果的DevOps工具。為什么會這樣?因為開發人員可以在容器機制內部工作,而運營工程師則能夠在容器外部以并行方向處理自己的任務。
當開發團隊采納Docker的同時,他們相當于在軟件開發生命周期當中添加了新的敏捷性層。容器技術***的突破就在于其一致性。基于Docker的應用程序能夠在筆記本電腦與生產環境下獲得同樣的運行效果。由于Docker將與應用程序相關的所有狀態都封閉了起來,因此大家根本用不著擔心底層操作系統的架構差異會給應用程序的運行依賴性帶來影響、或是產生新的漏洞。
3. 保障持續集成的一致性
持續集成機制能夠自動對代碼進行測試,并借此成為盡可能降低最終產品中漏洞數量的一大理想途徑。不過持續集成仍然存在著兩大弊端。
首先,持續集成機制很難將所有依賴性加以封裝。以Jenkins以及Travis為代表的傳統持續集成/持續交付技術通過建立源代碼庫的方式分段實現應用程序開發。雖然這種處理方式對于很多應用程序來說并不是問題,但二進制依賴性或者操作系統層面的變化仍然難以避免,這就使得代碼在生產環境中的實際運行效果同開發/測試/質量保證階段有所不同。相比之下,Docker由于可以將應用程序的整體狀態加以封裝,因此能夠保證代碼在生產環境中擁有與開發/測試/質量保證階段相一致的實際效果。
第二,持續集成并非專為微服務架構所構建。持續集成的設計思路其實是假設將一款應用程序鎖定在單一代碼庫當中。然而Docker***實踐能夠提供大量彼此間松散耦合的Docker容器,而這對于微服務架構來說可謂***拍檔。由此也衍生出了一系列新一代持續集成/持續交付工具,以Drone與Shippable為代表的這些新型解決方案都在開發之初就將Docker容器機制作為其立足根基。具體而言,這些工具允許大家對涉及多套代碼庫的多容器應用程序加以測試。
4. 讓各類***容器機制實現協作
Docker并不主張大家將自己的服務容器按照Hadoop、Nginx或者MongoDB這樣的現有方案進行調整,而是鼓勵我們通過開源社區實現協作、并憑借Docker Hub這套公共庫進行容器改進,從而讓每個人都能用到最出色的容器設計成果。由于Docker容器能夠將應用狀態封裝于其中,因此大家完全能夠以更靈活的方式對軟件加以配置、保證其擁有***運行效果。
有鑒于此,Docker憑借著這種允許每個人利用現成***實踐方案根據具體需求任意組合及對接的能力徹底改變了傳統云開發機制。這有點像是將云組件當成樂高積木,并最長按照一定的標準將它們組合起來。
云計算領域的樂高積木
每一項新技術的出現都可能會對現有局面帶來顛覆性的影響。就目前而言,云一直由按需供應、API驅動虛擬機以及圍繞虛擬機建立服務等要素所支撐。由此帶來的弊端在于,所有針對現有機制打造的工具都會受到虛擬機局限性的嚴重束縛。
Docker正在迅速改變云計算領域的運作規則,并徹底顛覆云技術的發展前景。從持續集成/持續交付到微服務、開源協作乃至DevOps,Docker一路走來已經給應用程序開發生命周期以及云工程技術實踐帶來了巨大變革。每一天都有成千上萬名新的開發者興高采烈地參與到原有應用重構或者全新Docker應用開發的相關工作中來。而了解Docker之火能夠快速呈現燎原之勢的理由,正是在這個不斷變化的技術世界中保持競爭優勢的關鍵所在。
【編輯推薦】
- 在Docker上建立多節點的Hadoop集群
- 基于 Docker 開發 NodeJS 應用
- 使用 Docker 作為 Python 開發環境
- 如何使用 Docker 來協助 X 系統上的開發工作
- 調查顯示:OpenStack和Docker雄冠云計算項目之首
【責任編輯:林師授 TEL:(010)68476606】