在評估無服務器和容器等選項時,需要繼續考慮虛擬機的優勢。
人們如今生活在一切都是云原生的時代,任何虛擬機的優勢都容易被忽略。虛擬機越來越被視為一種遺留技術,缺乏諸如容器和無服務器功能等新型解決方案的多功能性和性能優勢。如果企業如今要部署應用程序,則可能更傾向于在后一種類型的“下一代”平臺上進行部署,而不是使用無聊的原有虛擬機。
在某種程度上,這種趨勢是公平的。與替代形式的技術相比,虛擬機在許多情況下是效率較低的解決方案。
但是,這并不意味著虛擬機已經完全失效。就像當今的裸機環境(虛擬機在20年前幫助虛擬機成為“傳統”技術)一樣,如今仍然有其用例,仍然有很多充分的理由考慮使用虛擬機代替容器、無服務器功能或虛擬機。其他一些新型的托管解決方案。
反對采用虛擬機
為了解釋原因,首先概述與替代托管技術相比,虛擬機可能不是理想選擇的原因。
避免虛擬機,而是選擇諸如容器之類的東西來托管您的應用的最常見原因如下:
· 開銷:虛擬機比容器消耗更多的資源。
· 速度:在某些方面,虛擬機速度較慢。它們需要更長的時間來啟動(可能是一分鐘或兩分鐘,而不是一個容器的幾秒鐘)。由于某些主機系統的資源被虛擬化虛擬機管理程序占用,因此它們托管的應用程序運行速度可能也不太快,因此可供應用程序使用的可用資源較少。
· 冗余:虛擬機是在假設每臺計算機都駐留在單個服務器上的前提下設計的。盡管可以通過將虛擬機分布在服務器群集中來為虛擬機創建冗余,但是與使用容器在群集中分布應用程序相比,這樣做需要更多的工作-并且是一個更笨拙的過程。
· 龐大的映像:包含主機操作系統的虛擬機映像(大多數情況下)通常會占用至少幾GB的空間,甚至可能更多。相比之下,容器鏡像可能只有幾兆字節,因為容器鏡像不必打包完整的操作系統。
· 原生云:虛擬機是一項在數十年前(即云時代之前)廣泛使用的技術。因此,與它們不同的是,由于與容器和無服務器的虛擬機不同,虛擬機不是云原生技術,因此對它們存在某種文化偏見。
所有這些觀點都是真實有效的。對于許多現代應用程序部署,虛擬機不是優秀的選擇。
虛擬機仍然很重要的原因
但是,在許多用例中,虛擬機以積極的方式在競爭中脫穎而出。考慮以下原因,您可能想要保留您的虛擬機,并避免誘惑跳上容器化的,云原生的潮流。
靈活性
靈活性也許是虛擬機的最大賣點,到最后,它們仍將提供最大程度的部署靈活性。虛擬機幾乎可以部署在任何地方,而不管其操作系統或主機的配置如何。Windows系統可以托管基于Linux的虛擬機,反之亦然。
容器提供一定程度的靈活性。容器化的Linux應用程序不在乎是哪個Linux發行版托管它。但是,除非您使用虛擬機創建所需的其他抽象,否則您仍然無法運行Linux容器或Windows或Linux上的Windows容器。
安全與隔離
自Docker在2013年問世以來,容器的安全性得到了極大的提高。但是,它仍然值得關注。確實,對安全性的擔憂是某些團隊選擇不使用容器的主要原因。
隨著容器平臺的不斷成熟以及更多安全工具的全面支持,這些擔憂可能會得到緩解。但是,從一個簡單的事實來看,容器化的應用程序永遠無法與虛擬機達到相同程度的隔離,因此從安全角度來看,容器不可能完全匹配虛擬機。虛擬機不會像容器那樣共享彼此的內核或其他基本系統資源。
容器管理
的確,容器在許多方面都更自然地適合于分布式主機環境,但是此功能也會使它們更難管理。當數百個容器分布在數十個服務器上時,事情很快就變得難以控制。這就是為什么您使用Kubernetes之類的業務流程協調器來自動執行大部分管理工作的原因。但是,協調器本身增加了您必須設置,管理和保護的另一層復雜性。
大規模虛擬機部署也需要編排解決方案。但是,它們很少像容器部署那樣復雜。使用虛擬機時,移動部件很少,基礎架構的重疊層也更少。
虛擬機是原始云
最后,讓我們解決針對虛擬機的文化偏見。虛擬機可能早于云,但這并不意味著它們對云是陌生的。基于虛擬機的IaaS服務是2000年代中期由AWS等公共云提供商推出的第一項主要的云計算服務。它們仍然是這些提供商所提供產品的關鍵部分。
如今,容器和其他所謂的云原生解決方案可能會越來越熱。但是不要誤以為虛擬機也不是云原生技術。沒有虛擬機,云首先就不可能成為現實。
結論
對于許多IT團隊來說,是放心的時候了,學會學習Docker(以及企業喜歡的其他任何現代,云原生應用托管技術)。但這并不意味著完全放棄虛擬機。虛擬機在許多云中仍然扮演著重要角色,基于簡單的假設即將其注銷是錯誤的,因為它們是“舊”技術。