從容器到魂器,云的交付件
近日,# U.E.D Devops Workshop系列技術(shù)沙龍#在廣州和深圳展開,題為“Docker應(yīng)用與虛擬化技術(shù)”的技術(shù)沙龍為開發(fā)者帶來了Docker技術(shù)的分享。現(xiàn)場(chǎng),來自UCloud 平臺(tái)開發(fā)中心總監(jiān)邱模炯和DaoCloud CEO Roby分別與技術(shù)愛好者分享了他們?cè)贒ocker領(lǐng)域的看法與經(jīng)驗(yàn)。
本文分享來自DaoCloud CEO Roby的“從容器到魂器,云的交付件”的精彩內(nèi)容。
以下為整理內(nèi)容:
說起對(duì)于Docker的印象,Roby用的是“刻骨銘心”。他說,在其同事兩分鐘時(shí)間敲出一個(gè)分布式系統(tǒng)時(shí),其中用到的就是Docker技術(shù),就是這里的容器技術(shù)顛覆了其作為一個(gè)容器技術(shù)開發(fā)者對(duì)容器的理解——這個(gè)故事發(fā)生在2013年,兩年后Roby與幾位同事告別了原來的團(tuán)隊(duì),一起成立了一家專注容器技術(shù)的公司DaoCloud。
——這就是Roby與Docker的創(chuàng)業(yè)故事
行業(yè)趨勢(shì)
Docker的發(fā)展,與云計(jì)算技術(shù)一樣是時(shí)代催生的變革。1998年,瀑布式應(yīng)用開發(fā)非常流行,開發(fā)者嚴(yán)格遵循預(yù)先計(jì)劃的需求、分析、設(shè)計(jì)、編碼、測(cè)試的步驟順序進(jìn)行軟件開發(fā),但顯然它的嚴(yán)格分級(jí)導(dǎo)致了自由度的降低;2005年,桌面應(yīng)用盛行,它讓電腦更加人性化;隨后敏捷開發(fā)在開發(fā)者中流行起來,因?yàn)榭梢圆粩噙m應(yīng)需求,快速迭代;而云計(jì)算技術(shù)帶來的優(yōu)勢(shì)和變化讓我們開始追求精益工程,其中對(duì)于發(fā)布的要求也更高,推進(jìn)了容器的發(fā)展,于是我們看到了開發(fā)者對(duì)于Docker的狂熱。
是誰驅(qū)動(dòng)了這一系列的變革?CEO,CTO,工程師,客戶?Roby表示客戶才是最好的產(chǎn)品經(jīng)理。只有聚焦、突破、試錯(cuò)和迭代才能做到精益,也就是說需要把業(yè)務(wù)分為應(yīng)對(duì)變化的部分和積累沉淀部分,以不同迭代粒度推進(jìn)業(yè)務(wù)發(fā)展。
容器的變遷
容器,我們有時(shí)候開玩笑說它很像魂器,如《哈利波特》魂器一樣,它把你的靈魂分開,把將一部分藏在身體外的某個(gè)物體中,即使你的身體遭襲擊或者毀壞,當(dāng)你自己受到攻擊的時(shí)候,你也死不了,因?yàn)檫€有一部分靈魂在世間未受損害。
一樣的,在制作容器的過程中,就是把你的業(yè)務(wù)分裂開,將一部分藏在變化外的某個(gè)部署環(huán)境中,這樣就算你的局部遭變化或者重構(gòu),你的業(yè)務(wù)死不了,因?yàn)檫€有一部分核心在鏡像中不受損害。
這是容器成為迄今發(fā)展速度最快的云計(jì)算技術(shù)的原因。我們來看一下容器技術(shù)的變遷:
2008年,我們可以構(gòu)建輕量級(jí)的容器;
2013年,容器標(biāo)準(zhǔn)化,實(shí)現(xiàn)兼容性;
2014年,容器生態(tài)系統(tǒng)開始繁榮;
2015年,支持多Docker APP模式;
來,構(gòu)建一個(gè)平臺(tái)實(shí)現(xiàn)對(duì)容器的管理……
容器技術(shù) VS 虛擬化平臺(tái)
容器技術(shù)與虛擬化平臺(tái),不可避免會(huì)被技術(shù)人員進(jìn)行對(duì)比。關(guān)鍵的不同主要有以下三個(gè)區(qū)別:
虛擬化是一個(gè)模擬指令集,而容器,無論是Docker還是Warden都是直接的硬件指令,運(yùn)行在宿主操作系統(tǒng)之上;
系統(tǒng)資源消耗上,Docker的優(yōu)勢(shì)非常明顯,在配置管理上會(huì)有一些額外開銷,未來我們相信隨著優(yōu)化開銷會(huì)更低。。
容器的鏡像特別的小,因?yàn)轭愃频娜萜麋R像只要一份就行了,最上面一層是一個(gè)可讀寫層,所以每一個(gè)容器鏡像在發(fā)布的時(shí)候只會(huì)發(fā)布一個(gè)增量的存儲(chǔ)空間,這使得容器鏡像本身存儲(chǔ)空間非常小。
#p#
Docker爆熱的背后
事實(shí)上,容器技術(shù)并不是一個(gè)新的東西,而Docker只是把容器使用的門檻降到了更低,使得越來越多的開發(fā)者,而不是系統(tǒng)運(yùn)維開發(fā)人員,也可以使用容器技術(shù),那么Docker為什么會(huì)這么熱呢?
站在云的基石上
在移動(dòng)互聯(lián)網(wǎng)項(xiàng)目中,沒有人再會(huì)自己去做基礎(chǔ)架構(gòu)。像UCloud這樣專業(yè)的基礎(chǔ)云服務(wù)提供商的出現(xiàn)使得創(chuàng)業(yè)團(tuán)隊(duì)及企業(yè)高速迭代、創(chuàng)新和運(yùn)維支撐難度都大大降低了,云計(jì)算已經(jīng)成為所有人做業(yè)務(wù)的基石。
降低技術(shù)門檻
其實(shí),這與現(xiàn)在的時(shí)代背景有關(guān)系的。因?yàn)楝F(xiàn)在的互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)項(xiàng)目中有很多的痛點(diǎn),包括微服務(wù)架構(gòu)和容器管理平臺(tái)等,都需要我們用一個(gè)分布式的架構(gòu)和管理分布式的能力去支撐我們的業(yè)務(wù)體系,原來因?yàn)榧夹g(shù)門檻需要一支很強(qiáng)的技術(shù)團(tuán)隊(duì)去支撐業(yè)務(wù)體系,但是Docker的出現(xiàn)使得你實(shí)現(xiàn)技術(shù)跨越,降低技術(shù)門檻。
架構(gòu)變遷的需要
大家都在不斷的調(diào)整業(yè)務(wù)架構(gòu),從早期互聯(lián)網(wǎng)的三層架構(gòu),到現(xiàn)在的分層架構(gòu),到未來的微服務(wù)集群架構(gòu),或多或少都在組織內(nèi)會(huì)實(shí)現(xiàn)這種持續(xù)集成、持續(xù)開發(fā)來保證代碼質(zhì)量和協(xié)同工作。
這些的趨勢(shì)變化,已然成為容器發(fā)展的一個(gè)契機(jī),因?yàn)槿萜髟谶@個(gè)階段上能夠很好的把在這些過程統(tǒng)一起來。
改變開發(fā)流程
組織架構(gòu)在開發(fā)業(yè)務(wù)系統(tǒng),無論是企業(yè)內(nèi)部還是企業(yè)外部其實(shí)都無外乎是這樣的一個(gè)流程,都是從代碼、測(cè)試、集成、發(fā)布、部署到運(yùn)維這樣的一個(gè)過程,但原來的方式中其中一些過程是一個(gè)割裂的,也就是說這是人為的把原來應(yīng)該在一條線上的業(yè)務(wù)迭代分隔成了多個(gè)階段,這樣就會(huì)導(dǎo)致溝通Gap,從而引發(fā)各類問題。
Docker的出現(xiàn)使得軟件開發(fā)周期發(fā)生了變化,整個(gè)流程被分成了開發(fā)和交付兩個(gè)階段,即交付前和交付后。交付前開發(fā)人員需要迭代和移交鏡像和鏡像構(gòu)建的過程,交付后也有可能是開發(fā)人員本身就是運(yùn)維團(tuán)隊(duì)負(fù)責(zé)鏡像容器的編排和運(yùn)行。這樣就讓整個(gè)開發(fā)過程做到了統(tǒng)一,容器成為了應(yīng)用交互的一個(gè)標(biāo)準(zhǔn)交付件。讓每個(gè)過程都是可追溯的。
開發(fā)流程中,除了從代碼開始是一個(gè)代碼迭代的東西,從代碼提交到代碼倉庫之后所有的流程就與代碼沒有關(guān)系了,它主要跟容器鏡像有關(guān)系。開發(fā)人員提交代碼的時(shí)候是把代碼和鏡像打包在一起發(fā)布成一個(gè)應(yīng)用鏡像。革命性在于原來開發(fā)人員是很痛苦的,開發(fā)人員要學(xué)新的東西,新的架構(gòu)、新的打包方式;但容器的話,開發(fā)人員其實(shí)不需要學(xué)東西。
因此很多用戶的第一反應(yīng)會(huì)是,上容器管理平臺(tái)是不是很痛苦,學(xué)習(xí)成本是不是會(huì)很高?舉一個(gè)例子,我們?cè)谏虾S幸患铱蛻粲昧艘粋€(gè)非常非常老的中間件技術(shù),我們花了三個(gè)小時(shí)就幫他把所有組件間全部運(yùn)行在一個(gè)容器基礎(chǔ)教育鏡像下,他的開發(fā)人員、測(cè)試人員從此再也不要配發(fā)布環(huán)境了,每次只要把代碼和鏡像進(jìn)行綁定,代碼進(jìn)入鏡像,鏡像發(fā)布就可以了,所以從此他的開發(fā)人員和測(cè)試人員、運(yùn)維人員都跑到統(tǒng)一鏡像上面。
所以,使用Docker容器平臺(tái)之后開發(fā)流程會(huì)是這樣的:所有的工具鏈除了代碼開發(fā)段,用的都是Docker生態(tài)的組件來完成這些工作。從開發(fā)形態(tài)到持續(xù)集成引擎、發(fā)布流程、鏡像發(fā)布、編排、部署環(huán)境、運(yùn)維,除了代碼階段,之后所有流程都由容器完成的,只是在各個(gè)階段用的組件和工具不一樣,最終把這些流程串在一起形成一個(gè)自動(dòng)化發(fā)布流程。
誰在用Docker?
根據(jù)用戶的回訪發(fā)現(xiàn),使用Docker應(yīng)用比較廣泛的兩個(gè)領(lǐng)域是互聯(lián)網(wǎng)平臺(tái)和移動(dòng)社交,分別占全部用戶的20%和25%。另外,垂直電商企業(yè)占全部用戶的10%,P2P金融企業(yè)則是15%,物聯(lián)網(wǎng)數(shù)據(jù)企業(yè)占比18%,視頻處理也占到了12%。
從上圖可以看出,容器云平臺(tái)的價(jià)值所在,主要體現(xiàn)在資源利用率、灰度發(fā)布、運(yùn)維一體化和彈性伸縮帶來的好處上。
實(shí)踐的坑兒……
每個(gè)技術(shù)在實(shí)踐過程中,總是要經(jīng)歷這樣或那樣的坑兒,實(shí)在正常的很,Docker也一樣。目前,最大的坑兒就是網(wǎng)絡(luò)問題。
國內(nèi)網(wǎng)絡(luò)環(huán)境下,自己裝個(gè)Docker環(huán)境然后運(yùn)行,最簡(jiǎn)單的也要花上半天的時(shí)間,這是相當(dāng)痛苦的一件事,于是我們花了一個(gè)星期時(shí)間解決了這個(gè)痛點(diǎn),也就是我們的DaoMirror鏡像服務(wù),在中美之間架了一個(gè)鏡像服務(wù)器,這個(gè)鏡像服務(wù)器其實(shí)是完全安全的,因?yàn)槲覀儾徊扇∮脩魯?shù)據(jù),我們只是把鏡像在中美的節(jié)點(diǎn)之間做了緩存,基本上相當(dāng)于你在美國托Docker鏡像,這樣能夠極大的加速我們的開發(fā)過程。
嘉賓介紹:
Roby Chen(陳齊彥 ),DaoCloud聯(lián)合創(chuàng)始人,曾任EMC中國研究院總架構(gòu)師,Pivotal CloudFoundry云平臺(tái)及應(yīng)用實(shí)驗(yàn)室創(chuàng)始人,主導(dǎo)了一系列云計(jì)算及大數(shù)據(jù)相關(guān)前瞻技術(shù)開發(fā)工作,作為中國最早的開源云計(jì)算技術(shù)布道者,在開源社區(qū)及企業(yè)客戶中享有極高的聲譽(yù)。著有《大數(shù)據(jù),戰(zhàn)略技術(shù)實(shí)踐》一書。2015年從EMC離職創(chuàng)立DaoCloud,專注于企業(yè)級(jí)容器云平臺(tái)技術(shù)的構(gòu)建。