Docker是傳統(tǒng)的應(yīng)用發(fā)布管理的終結(jié)者么?
譯者注:使用Docker能真正改善傳統(tǒng)的應(yīng)用發(fā)布管理中遇到的問題么?以下是譯文:
自從2013年發(fā)布以來(lái),Docker已經(jīng)成為每一個(gè)操作管理者眼中的***。如果你一直與世隔絕,這里恰恰是你錯(cuò)過(guò)的部分。
Docker是在一個(gè)操作環(huán)境地址空間中的分區(qū)能力。通過(guò)允許分區(qū)直接使用宿主的操作系統(tǒng),即使操作系統(tǒng)位于分區(qū)之外(分區(qū)在這里稱為容器),啟動(dòng)時(shí)間得以縮短,管理容器所需要的資源同樣得以縮減(如果你熟悉z/OS,你會(huì)發(fā)現(xiàn)這個(gè)概念有點(diǎn)熟悉)
財(cái)務(wù)人士會(huì)喜歡這點(diǎn),因?yàn)楂@取操作環(huán)境licenses的花費(fèi)會(huì)實(shí)質(zhì)性的減少,理論上,每一個(gè)非應(yīng)用部分的組件都能駐留在容器以外。這意味著只需要購(gòu)買一個(gè)Windows licenses,而不是每一個(gè)虛擬機(jī)上都要購(gòu)買一個(gè)(如果不使用Docker,這是必要的過(guò)程)。
概念看似簡(jiǎn)單,但是如何工作呢?
本質(zhì)上,一個(gè)特殊的文件(稱為一個(gè)Docker文件),包含一條或多條關(guān)于如何創(chuàng)立一個(gè)容器的指令。這個(gè)Docker文件作為程序的部分,在文件系統(tǒng)中產(chǎn)生容器,其包含一個(gè)單獨(dú)的應(yīng)用以及相關(guān)聯(lián)的二進(jìn)制代碼。這個(gè)容器(文件系統(tǒng)中的一個(gè)子目錄)作為任意的文件集會(huì)被傳送到目標(biāo)環(huán)境并在目標(biāo)環(huán)境中利用Docker的運(yùn)行時(shí)庫(kù)開始運(yùn)行,運(yùn)行時(shí)庫(kù)可以通過(guò)命令行接口或者一個(gè)API(典型的基于REST,但是還有其他的實(shí)現(xiàn))
系統(tǒng)管理員會(huì)很喜歡這點(diǎn),因?yàn)槿萜饕子诓渴?通過(guò)XCOPY命令就可以?)和維護(hù)(REST接口會(huì)很容易地集成到任何現(xiàn)代基礎(chǔ)架構(gòu)管理平臺(tái)中)。
企業(yè)級(jí)發(fā)布自動(dòng)化解決方案的需求
很不幸,當(dāng)人們?cè)噲D使用它作為真正的應(yīng)用發(fā)布管理的替代品時(shí),這個(gè)概念又不行了。我們能夠使用每個(gè)人在高中學(xué)會(huì)的六個(gè)詞中的五個(gè)詞還描述應(yīng)用發(fā)布管理:
- Who: 并不是組織中的任何人都可以將某一個(gè)應(yīng)用部署到某個(gè)環(huán)境中。實(shí)際上,即使對(duì)于那些專職從事這個(gè)工作的人,也需要其他人的許可才能進(jìn)行部署工作。
- What: 對(duì)于那些想真正引入敏捷業(yè)務(wù)概念的組織,
每一次都部署一個(gè)完整的應(yīng)用也是不可接受的。那些被認(rèn)為是低風(fēng)險(xiǎn)的工件(artifacts)(如內(nèi)容更新)可以及時(shí)部署,而高風(fēng)險(xiǎn)的工件則需要在進(jìn)行大量的測(cè)試和其他驗(yàn)證工作后,排隊(duì)等待進(jìn)行發(fā)布。Docker就屬于后者,但是還有一些限制,這會(huì)在后面提到。
- Where: 一個(gè)應(yīng)用從開發(fā)到生產(chǎn)所經(jīng)歷的環(huán)境經(jīng)常與部署的目標(biāo)環(huán)境是不同的。這些差異會(huì)在應(yīng)用進(jìn)行部署以后,通過(guò)更改應(yīng)用的配置來(lái)解決。
- When: 發(fā)布窗口不是一個(gè)新概念。甚至在非生產(chǎn)環(huán)境中,也需要各自建立發(fā)布窗口,因?yàn)榄h(huán)境經(jīng)常被同一個(gè)功能或者夸功能的多個(gè)團(tuán)隊(duì)所共享(例如:測(cè)試和開發(fā)可能會(huì)使用相同的環(huán)境)
- How: 作為很可能是最難以完全集成到一個(gè)組織運(yùn)行能力中的環(huán)節(jié),部署一個(gè)應(yīng)用的過(guò)程遠(yuǎn)不是簡(jiǎn)單的理解如何安裝或者配置它。例如,與一個(gè)IT服務(wù)管理(ITSM)應(yīng)用集成,以確保所有的需求改變都已輸入并且處于正確的狀態(tài),這些被吸納進(jìn)部署過(guò)程以便操作環(huán)境的狀態(tài)一直被明確的理解。這個(gè)會(huì)在下面進(jìn)行詳細(xì)的討論。
對(duì)于上面的5個(gè)疑問詞,Docker 只解決了其中的一個(gè),而且是并沒有采用最有效的方式。以一個(gè)歐洲著名銀行為例,他們現(xiàn)在每個(gè)月發(fā)布的產(chǎn)品已經(jīng)過(guò)千,這也只有在所有發(fā)布的產(chǎn)品都不是高風(fēng)險(xiǎn)的才能實(shí)現(xiàn),在這個(gè)例子里,這意味著這些工件都是低風(fēng)險(xiǎn)類型。因此,這些類型工件的發(fā)布會(huì)很迅速,這有助于確保這個(gè)銀行的客戶的資產(chǎn)滿足他們的需要。
然而,如果他們?cè)谑褂肈ocker,無(wú)論這些類型的工件是否獲得生產(chǎn)許可,整個(gè)應(yīng)用都需要重建。對(duì)于大部分公司來(lái)說(shuō),直接將未獲許可的二進(jìn)制文件發(fā)布到產(chǎn)品中而帶來(lái)的風(fēng)險(xiǎn)是不可接受的。這只是對(duì)于上面5項(xiàng)之一-Docker對(duì)于解決其他4項(xiàng)無(wú)能為力。
應(yīng)用發(fā)布管理不只是應(yīng)用
只從應(yīng)用的角度考慮應(yīng)用發(fā)布管理是很有趣的,而從業(yè)務(wù)的角度來(lái)看,忘記應(yīng)用是更大場(chǎng)景的一部分。在上面How部分里,提到了ITSM,這不只是發(fā)布過(guò)程必須要集成的唯一技術(shù)。事實(shí)上,還有SDLC工具鏈與一系列適合特定需要的解決方案可供選擇:適用于連續(xù)集成的Hudson 和Jenkins;用于源代碼管理的Git和Subversion;用于工件管理的Nexus和Artifactory;用于配置管理的 Chef 和 Puppet 等等。
此外,在應(yīng)用的生命周期中,發(fā)布應(yīng)用的過(guò)程通常包括針對(duì)這過(guò)程的治理,但是這卻不是該過(guò)程的一部分。然而,這些構(gòu)建應(yīng)用所要經(jīng)歷的階段都是必要的,這可以將高節(jié)奏進(jìn)行發(fā)布的風(fēng)險(xiǎn)降到***,這包括許可、驗(yàn)證和其他類型的活動(dòng)。
自動(dòng)化是一切的關(guān)鍵
我們提到的每一件事對(duì)于應(yīng)用發(fā)布來(lái)說(shuō)都是關(guān)鍵的,但是,***結(jié)果是什么。終端用戶需要新的功能,應(yīng)用開發(fā)團(tuán)隊(duì)能夠以什么樣的速度開發(fā)出新的功能并把它最終交付到終端用戶手上,決定了新的功能能以多快的速度變成附加的收入。
此外,過(guò)程的可重復(fù)性能夠保證應(yīng)用發(fā)布更高的成功率,相反的,失敗的部署會(huì)消耗你的公司資金,在診斷和修復(fù)過(guò)程中開發(fā)的應(yīng)用數(shù)量也會(huì)受影響而下降。過(guò)去3年,分析公司的兩項(xiàng)研究表明,財(cái)富1000強(qiáng)公司因變更、配置或其他與之相關(guān)的問題而導(dǎo)致應(yīng)用中斷的成本在$200k-400k/小時(shí)。
上述部分中的每一個(gè)工具只與應(yīng)用開發(fā)和發(fā)布過(guò)程的一小部分有關(guān)系。類似地,Docker解決了與應(yīng)用程序發(fā)布相關(guān)的工件管理,這樣就可以簡(jiǎn)化這些工件的部署,確實(shí)如此。這些與其他解決方案的協(xié)調(diào)能力,必須要通過(guò)一個(gè)統(tǒng)一的方案來(lái)進(jìn)行管理,這就是應(yīng)用發(fā)布自動(dòng)化的目標(biāo)。
總結(jié)
總的來(lái)說(shuō),Docker是一項(xiàng)令人興奮的技術(shù),它應(yīng)該被單純看作是在整個(gè)應(yīng)用程序發(fā)布周期中存在的另一種機(jī)制。但是它不應(yīng)該被看作是一個(gè)定義良好方法的替代品,它不僅包括“what”,還包括“who”、“where”、“when”以及“how”。
投資于企業(yè)級(jí)自動(dòng)化解決方案,實(shí)現(xiàn)關(guān)鍵任務(wù)應(yīng)用的自動(dòng)發(fā)布,不但可以提高部署應(yīng)用的速度,而且能提高公司數(shù)字化轉(zhuǎn)型的程度,隨著更多的應(yīng)用發(fā)布通過(guò)自動(dòng)化完成,也會(huì)為公司帶來(lái)更多的盈利。