容器技術能夠幫助企業嘗試實現數字化轉型,但是這樣做也不是無懈可擊的。專家Christopher Tozzi在這里與我們分享了需要詢問的正確問題。
Docker、Kubernetes 以及其他與容器相關的技術都是如今IT領域中最熱門的話題之一。但是,在將這些技術納入到企業數字化轉型發展路線圖之前,你還是需要對這些技術進行評估以判斷它們是否符合需求。
確實,容器技術能夠幫助企業讓應用部署變得更為高效、可靠和更具可擴展性。
但是,為了讓容器正常運行,你需要以正確的方式使用它們。與安裝Docker并讓一切都可以自行完成相比,為容器技術的應用制定一份數字化轉型發展路線圖要更為困難。
本文通過全面介紹容器技術的利與弊來幫助讀者深入了解容器技術。文章詮釋了如何充分利用容器技術并將其作為企業數字化轉型發展路線圖的一部分。
容器主要做什么和不做什么
容器是用戶部署應用所需基礎架構的構件模塊。與原來的基礎設施(如虛擬機,VM)相比,它們具有如下幾個關鍵優勢:
它們的啟動速度更快。容器的啟動時間一般為幾秒鐘;而虛擬機則需要幾分鐘。它們的可擴展性更好。當用戶需要為它們的容器化應用程序新增容量時,他們只需簡單地啟動更多容器即可(或者讓他們的編排工具為他們自動執行這一操作)。與使用虛擬機構建的環境相比,這種技術能夠更快更簡便地實現可擴展性,而基于虛擬機的環境則需要很長的時間用于復制。它們是微服務的理想選擇。單個容器不需要托管一個完整的應用程序。它只需要托管應用程序中的一部分——一個微服務。通過使用容器技術,部署多個微服務的工作將變得更為簡便,在此基礎之上就可以構成一個完整的應用程序。它們提供了環境平衡。一個Docker容器環境中的可配置變量并不會很多。這就意味著,用戶可以在不同Docker主機服務器或集群之間遷移容器,且無需擔心環境變量的差異性會導致用戶應用程序出現意外的問題。無論底層服務器硬件是處于何種狀況、主機操作系統是使用何種類型或者用戶的容器化應用程序是運行在測試還是生產環境中,用戶都可以擁有高度的信任感,因為它能夠在較好的預測狀況下正常運行。它們消耗的資源較少。在容器中運行的應用程序并不需要一個完整的客戶操作系統來托管它。有鑒于此,容器的運行開銷較少。所以與用戶的云虛擬機相比,用戶可以在單臺服務器上運行更多的容器。但是,在制定數字化轉型發展路線圖中容器技術并不能包打天下。以下是它們的一些主要限制:
它們是與特定操作系統綁定的。雖然Docker本身支持Windows和Linux,但是使用Docker在Linux主機服務器上創建運行的容器是無法在Windows上運行的, 反之亦然。從這個意義上來說,容器的可移植性要比虛擬機差。如果使用的是VMware,那么一個Linux客戶虛擬機是可以在Windows或Linux主機服務器上運行的,當然反之也是成立的。(一些諸如基于Kernel虛擬機的其他虛擬化平臺則只能在Linux主機上運行,但是它們能夠托管Windows客戶機。)它們可能需要對應用進行重新構造或編寫。在很多情況下,用戶是無法簡單地把現有的應用程序放入容器中并使其正常運行的,就如同把現有主機服務器部署在虛擬機中一樣。用戶的應用程序通常需要進行重新構造或重新開發才能在容器中正常運行。其中所需的重新開發工作量將隨著應用程序的最初設計架構和用戶希望應用程序將如何在容器中運行的不同而各有不同。它們不適用于GUI應用。雖然從技術上來說使用容器技術來運行需要圖形用戶界面的應用程序是可行的,但是在大多數實際應用場景中這樣做是不現實的。將容器技術融入到數字化轉型發展戰略中容器技術并不是包治用戶遺留基礎設施問題的靈丹妙藥。它們可以在某些方面能夠有助于制定數字化轉型發展路線圖,但是它們并不是用戶想要對各種遺留應用或環境實現現代化的正確解決方案。
為了評估容器技術是否有助于改進用戶企業中特定的應用程序、流程或項目,可以詢問如下這些問題:
Docker是否支持你的工作負載?在某些情況下,Docker根本不適用于某些類型的應用。如前文所述,如果用戶的應用需要使用圖形界面,那么Docker可能就無法很好地支持此類應用了。你的主機基礎設施是否能夠支持容器?Docker可以在任何現代的Linux版本以及Widnows 10和Windows Server 2016 上運行。但是,Docker不支持其他主機操作系統。如果用戶的主機基礎設施是由運行Solaris的服務器組成的,那么是無法遷移至Docker的。(甲骨文公司表示有計劃將Docker引入Solaris,但是具體支持內容還有待實現。)你是否需要為了使用容器技術而對應用進行重新構建或開發?如果您的應用已經準備好分為若干個微服務,那么只需簡單的重構就可以很容易地將應用移植至Docker環境中。反之,如果用戶的應用程序比較復雜且不易分拆,那么就可能需要對應用程序進行完全重寫,以便它能夠在容器中高效運行。如果屬于這種情況,那么在確定使用Docker之前請先確認您擁有足夠的重新開發資源。你優化哪些類型資源的使用?容器技術可以幫助您更高效地使用您的內部部署或基于云的計算與內存資源。例如,如果用戶需要檢查前端應用程序,那么它會對您大有裨益。但是,對于存儲資源優化,容器技術并不是非常有用。無論一個數據庫是否在容器內運行,它所消耗的容量資源都是基本相同的。你是如何設置和管理容器環境的?基本上有兩種方法:第一種是用戶在內部部署硬件或基于云的虛擬服務器上自行安裝和管理Docker,第二種則是使用容器即服務(CaaS)平臺。對于第一種方法,用戶需要確保其企業擁有必要的相關專業知識。而如果采用第二種方法,用戶應當對將要使用的CaaS平臺的優勢和局限性進行評估。公共云中的大多數CaaS平臺都要求用戶使用那些他們可能想要或可能不想要在技術堆棧中添加的特定工具。當談及用戶的數字化轉型發展路線圖時,Docker是否能夠提供比云更高的效率?對于一些類型的工作負載來說,采用遷移至基于云服務的方法要比使用Docker可以讓用戶獲得更好的結果。例如,如果用戶在其應用中有著計算密集型服務,那么就會希望利用無服務器的計算平臺(例如亞馬遜網絡服務Lambda),以便以高性能、高性價比的方式運行它們。在工作負載優化這方面,Docker就不會如此高效了。