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