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