您想要高效的应用程序扩展吗?不用服务器!

发布于:2021-01-21 16:23:40

0

97

0

服务器 应用程序扩展 虚拟机

在21世纪头十年,我们看到了从使用物理硬件到虚拟化的转变。这种转变是由现代cpu中时钟频率和内核数量的增加所驱动的。在单个物理服务器上运行单个应用程序不再具有成本效益。开源和商用虚拟机监控程序解决方案开始在服务器市场获得巨大的普及。

今天,我们看到了另一个从虚拟机到容器的转变。容器是运行在操作系统内核之上的虚拟运行时环境,模拟操作系统本身。虚拟机和容器之间的区别在于虚拟机模拟硬件,而运行在虚拟机上的容器只模拟操作系统。

操作系统仿真有许多好处。在容器中运行的进程彼此隔离。容器可以快速启动和终止,因为它们的占用空间或大小通常是最小的,这使它们成为快速扩展的最佳选择。

虚拟机和容器允许软件更好地利用购买的硬件。多个应用程序可以在同一硬件上同时运行。对于财政部门来说,高利用率意味着资本支出的有效利用。

这就是无服务器模式的用武之地。无服务器计算将应用程序体系结构描述为托管云服务的集合。像AWS Lambda、Aurora或CloudFront这样的托管服务提供了高附加值,并允许您快速构建应用程序。您将时间花在开发业务逻辑上,而不是摆弄基础设施,比如确保数据库作为集群运行。无服务器应用程序模型可以帮助您加速应用程序堆栈,并轻松组织和管理与应用程序关联的云资源的状态。

集装箱空间的重大技术进步使无服务器计算成为可能。云提供商努力减少开销,并允许在他们的平台上快速调配资源,很快发现有必要开发新型的硬件加速虚拟机监控程序。

硬件加速的hypervisor(如awsnitro)和虚拟机监视器(如awsfielcracker)的结合允许快速部署和执行容器环境。由于新一代的硬件加速虚拟机监控程序,像AWS Lambda这样的计算服务现在提供了更高的CPU、磁盘和网络I/O性能。

一个经济高效的云环境完全是关于所提供资源的高利用率。无服务器计算保证您始终以100%的利用率运行应用程序。在无服务器上运行应用程序时,您的资源调配总是完美的,因为您只需为实际使用的机器时间付费。

与经典的计算服务(如EC2)相比,无服务器计算可以很好地适应传入的流量。使用经典EC2进行扩展通常涉及另一个称为auto Scaling的服务。自动伸缩本身是一项复杂的功能,它可以跟踪选定的指标,如CPU负载或虚拟机的网络利用率。自动缩放使用这些度量触发警报,以向上或向下缩放EC2实例群。正如您所知,EC2舰队扩展涉及很多步骤,而且很容易遗漏一些东西,因为每个应用程序都非常不同。

使用无服务器,您可以忘记所有的复杂性。无服务器应用程序扩展实际上只是复制最终的容器来选择hypervisor,执行它,并将所有传入的事件路由到它。如果您的无服务器应用程序符合容器大小和运行时内存限制,那么您就可以开始了,您的应用程序将可以适当地扩展。这是由运行在硬件附近的容器和虚拟机监控程序实现的。Serverless几乎没有操作系统开销,因为它只运行内核代码和容器中的应用程序。

可伸缩性是serverless擅长的,但它也有一些局限性。无服务器是基于事件处理的完美计算模型。web上的大多数工作负载都是基于事件的,或者可以转换为事件。目前,serverless不能很好地处理长时间运行的进程,因为AWS Lambda和其他云服务有执行限制。经典的VM计算或其他类型的基于容器的计算仍然更适合长时间运行的进程。只要您的工作负载可以是事件驱动的,并且处理事件的速度相对较快,而且资源需求较低,那么无服务器应该可以很好地满足您的需要。当前的无服务器限制似乎都不是永久性的,服务产品应该随着时间的推移而发展和改进。昨天有问题的限制明天可能就不存在了。

最后,最重要的是:成本。开发和运行无服务器应用程序要便宜多少?我得说这取决于应用程序。当您的应用程序扩展良好时,它们将为您和您的用户提供更好的价值。你可以便宜一点。无服务器的帮助是,消除了对不使用的计算资源的过度配置和过度支付。虽然serverless改进了可伸缩性,但其他收费利用率仍然适用您仍然应该考虑您使用了多少带宽、存储和数据库卷。无服务器目前无法帮助您更好地利用这些资源,这仍取决于您和您的应用程序。

你可能在网上看到过关于无服务器和供应商锁定的帖子。我想说,您仍然可以在应用程序的体系结构中控制这些方面。无服务器计算有许多好处—性能优异、安装简单、开发和部署迅速。这就是为什么serverless成为我工具箱中的一个重要工具,用于构建高性能的应用程序,同时保持低成本。如果你还没试过做仆人,你应该做。从探索无服务器应用程序模型开始。