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