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