在评估无服务器和容器等选项时,您需要继续考虑虚拟机的优势。人们生活在一个一切都是云原生的时代,任何虚拟机的优势都容易被忽视。虚拟机越来越被视为一种遗留技术,缺乏容器和无服务器功能等新解决方案的多功能性和性能优势。如果一家企业今天要部署一个应用程序,它可能更愿意在后一种“下一代”平台上这样做,而不是使用无聊的遗留虚拟机。在某种程度上,这种趋势是公平的。在许多情况下,与替代技术形式相比,虚拟机是一种效率较低的解决方案。但是,这并不意味着虚拟机已经完全失败。就像今天的裸机环境(VM帮助VM在20年前成为“遗留”技术)一样,今天仍然有用例,并且仍然有很多充分的理由考虑使用VM而不是容器、无服务器功能或VM。其他一些较新的托管解决方案。反对虚拟机要解释原因,首先要概述为什么虚拟机与其他托管技术相比可能并不理想。避免使用虚拟机并选择容器之类的东西来托管您的应用程序的最常见原因如下:开销:虚拟机比容器消耗更多的资源。速度:在某些方面,虚拟机速度较慢。它们需要更长的时间才能启动(对于容器来说可能是一两分钟而不是几秒钟)。由于主机系统的一些资源被虚拟化管理程序占用,它们托管的应用程序可能也不会运行得那么快,从而留给应用程序使用的可用资源更少。冗余:虚拟机的设计假设每台计算机都驻留在一台服务器上。虽然可以通过在服务器集群中分布虚拟机来为虚拟机创建冗余,但与使用容器在集群中分布应用程序相比,这样做需要更多的工作和更笨拙的过程。巨大的图像:包含主机操作系统的虚拟机图像(在大多数情况下)通常会占用至少几千兆字节的空间,甚至可能更多。相比之下,容器镜像可以只有几兆字节,因为容器镜像不必打包完整的操作系统。CloudNative:虚拟机是几十年前广泛使用的技术,在云时代之前。因此,与它们不同的是,对它们存在一定的文化偏见,因为VM不是云原生技术,与容器和无服务器不同。所有这些观点都是真实有效的。对于许多现代应用程序部署,虚拟机并不是一个很好的选择。VM仍然重要的原因然而,在许多用例中,VM以积极的方式在竞争中脱颖而出。考虑以下原因,您可能希望保留虚拟机并避免跳上容器化、云原生潮流的诱惑。灵活性灵活性也许是虚拟机的最大卖点,而且归根结底,它们仍然提供最大程度的部署灵活性。虚拟机几乎可以部署在任何地方,无论其操作系统或主机配置如何。Windows系统可以托管基于Linux的虚拟机,反之亦然。容器提供了一定程度的灵活性。容器化的Linux应用程序不关心哪个Linux发行版托管它。但是你仍然无法在Linux上运行Linux容器或Windows或Windows容器,除非你使用虚拟机来创建你需要的其他抽象。安全与隔离自2013年Docker问世以来,容器的安全性得到了极大的提升。然而,它仍然值得一看。事实上,安全问题是一些团队选择不使用容器的主要原因。随着容器平台不断成熟并得到更多安全工具的全面支持,这些担忧可能会有所缓解。然而,从容器化应用永远无法实现与虚拟机同等程度的隔离这一简单事实来看,从安全角度来看,容器不可能完全匹配虚拟机。虚拟机不会像容器那样共享彼此的内核或其他必要的系统资源。容器管理的确,容器在许多方面更适合分布式主机环境,但此功能也可能使它们更难管理。当数百个容器分布在数十台服务器上时,事情很快就会变得难以管理。这就是为什么您使用像Kubernetes这样的编排器来自动化大部分管理工作。但是,协调器本身增加了另一层复杂性,您必须设置、管理和保护它。大规模虚拟机部署也需要编排方案。但是,它们很少像容器部署那样复杂。使用虚拟机时,几乎没有移动部件,基础架构的重叠层也更少。虚拟机是最初的云最后,让我们解决一下对虚拟机的文化偏见。虚拟机可能早于云,但这并不意味着它们是云的新事物。基于虚拟机的IaaS服务是AWS等公有云提供商在2000年代中期推出的第一批主要云计算服务。它们仍然是这些提供商提供的服务的关键部分。容器和其他所谓的云原生解决方案最近可能会变得越来越热。但是不要错误地认为虚拟机也不是云原生的。没有虚拟机,云从一开始就不可能存在。结论对于许多IT团队来说,是时候放轻松并学习Docker(以及您的企业喜欢的任何其他现代云原生应用程序托管技术)。但这并不意味着完全放弃虚拟机。虚拟机在许多云中仍然发挥着重要作用,基于它们是“旧”技术的简单假设而将其注销是错误的。
