難怪Docker正在迅速發(fā)展。Docker,一個開源項目。僅僅兩年,Docker價值近10億美元,最近獲得了9500萬美元的資金。令人激動的是,我們看到有這么多開發(fā)者對這個項目的熱情。然而,我將在下面討論企業(yè)使用Docker本身是不夠的。
現(xiàn)代IT問題
許多企業(yè)IT團隊解決這兩個問題:首先,開發(fā)者和運維者在優(yōu)先級上并不能總是達成一致。企業(yè)必須應對的挑戰(zhàn)將來自開發(fā)人員的代碼和運維團隊的代碼切換。這兩個團隊之間的關系很難和諧相處。
第二,將代碼從一個地方遷移到另一個可以是很困難的。因為你沒有簡單的方法打包應用程序代碼,包括你的系統(tǒng)依賴性。你在不同的操作系統(tǒng),不同的虛擬機或不同的IaaS上處理代碼。
Docker的好處
Docker最激動人心之處就是可以解決企業(yè)的這兩個問題。第一個問題似乎是確定的,因為開發(fā)人員和運維人員之間有著清楚的界限。開發(fā)人員考慮Docker容器內(nèi)部發(fā)生的一切,運維人員思考容器外面發(fā)生了什么。Docker讓這一切變得更加簡單和方便,這是一個非常便攜式的解決方案。
至于第二個問題,Docker通過使你在單個應用程序進程打包一切與你相關的應用程序。但這只是部分解決了這些問題。
Docker缺少什么
Docker可以形象化的比喻為像可疊起堆放的樂高積木。每個容器是一個樂高。樂高玩具的美麗之處是可以組裝的磚塊和建立各種各樣的奇妙的東西。同樣的概念也適用于Docker的容器中。利用Docker,諸如編排、監(jiān)控、日志記錄和擴展可能成為企業(yè)關注的問題。Docker容器可以為企業(yè)運行幾個容器,但如果你運行成百上千的呢?這些都是需要考慮的一些問題,它們超出了Docker容器本身可以提供的范圍,為什么PaaS平臺是對Docker的補充。
讓我們看看容器本身三個特定的缺陷:
1. 裝載容器
應用程序開發(fā)人員如何讓一款應用進入容器?對于開發(fā)者來說構(gòu)建Docker image也有一些負擔,誰需要關注代碼,不依賴于不同的系統(tǒng)的操作系統(tǒng)。這個問題的解決方案被稱為buildpacks——對于PaaS是最好和最便攜的選擇。大多數(shù)PaaS生態(tài)系統(tǒng)正在讓其標準化。Buildpacks允許你建立你的棧,包括在容器內(nèi)部的所有系統(tǒng)依賴關系,以及配置應用程序的環(huán)境。開發(fā)人員只需要考慮他們的應用程序代碼。他們不需要擔心什么。Buildpacks配置你的應用程序。
2. 編排運輸過程
假設開發(fā)人員創(chuàng)建大量的Docker的容器。然后他們與運維團隊通信:“Ship these. Deploy these to production”。IT運維人員如何傳輸這些容器并且以系統(tǒng)的方法來管理這些容器性能、安全性和遵從性?容器有很多樂高積木。他們?nèi)绾喂芾?
這個問題的答案是Docker Schedulers。如今在市場上有大量的調(diào)度器,它們?yōu)槟憔幣藕瓦\行的容器并且跨集群分發(fā)它們——而不用考慮你的云計算集群是什么。調(diào)度器是有彈性的,所以如果一個容器或機器或應用程序宕機,它會重新分配這些容器。從用戶的角度來看,根本感覺沒有停機時間。雖然這些調(diào)度器解決一部分運輸問題是有幫助的,但是還有另一個重要的問題,企業(yè)仍然面臨一個調(diào)度器不能解決的問題。
3. 開發(fā)自助服務
企業(yè)文化當中對于自助服務似乎有著天然的缺陷。開發(fā)人員和IT運維之間也存在的天然的鴻溝。在某些方面,你可以說他們之間存在著一堵墻。經(jīng)常發(fā)生的是,開發(fā)人員將構(gòu)建一個應用程序,然后把它扔在墻那邊給運維人員,并且希望應用能夠一切運行正常。因此,將應用程序部署到生產(chǎn)需要數(shù)周或數(shù)月。所以聽到開發(fā)者抱怨他們需要多長多長時間在生產(chǎn)環(huán)境中部署應用就不難理解了。
這種文化上的差異遭遇到破舊的基礎設施時,后果就會更嚴重,因為一些企業(yè)仍使用過時的票務系統(tǒng)獲取虛擬機,計算周期可能需要數(shù)周時間。
開發(fā)人員可以解決這個分歧,但他們需要特殊的工具。他們需要一種自助的方式為企業(yè)工作。給開發(fā)人員自由的部署在他們的應用,但是這些工具也必須滿足安全性和遵企業(yè)的需求,包括多租戶管理。開發(fā)人員可以專注于他或她的應用程序,但是企業(yè)需要考慮所有由不同的開發(fā)人員提交的應用程序。怎么處理這個?如何打破這堵存在與開發(fā)者和運維者之間的墻?
PaaS平臺也有閃光的地方,它提供了一個介于你的應用程序和基礎設施之間的平臺。這個平臺是一樣的,從開發(fā)到生產(chǎn),提供一個無縫應用交付體驗。
一個新的開發(fā)方法
Docker的承諾是真正偉大的,幫助開發(fā)人員解決構(gòu)建新應用時的重大問題。它將改變應用程序開發(fā)過程,但某些挑戰(zhàn)必須克服從而使得企業(yè)獲得最大好處。PaaS平臺將促進Docker的發(fā)展,并且?guī)椭渎男凶约旱某兄Z。