您想要高效的应用程序伸缩?去serverless !

发布于:2020-12-24 16:16:44

0

124

0

虚拟机 容器 操作系统 云计算 无服务器

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

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

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

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

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

容器空间的重大技术进步使无服务器计算成为可能。努力减少开销并允许在其平台上快速提供资源的云提供商很快发现,有必要开发新型硬件加速管理程序。

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

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

与EC2等经典计算服务相比,无服务器计算可以很好地扩展传入流量。使用经典EC2进行伸缩通常涉及到另一个称为自动伸缩的服务。自动伸缩本身是一个复杂的特性,用于跟踪选择的指标,比如CPU负载或虚拟机的网络利用率。自动伸缩使用这些指标来触发警报,以增加或减少EC2实例的数量。可以看出,EC2舰队扩展涉及很多步骤,而且很容易忽略一些东西,因为每个应用程序都很不同。

使用serverless,您可以忘记所有的复杂性。无服务器应用程序伸缩实际上只是复制最终的容器以选择管理程序,执行它,并将所有传入事件路由到它。如果您的无服务器应用程序符合容器大小和运行时内存限制,那么您的应用程序就可以适当伸缩了。这是由运行在更靠近硬件的容器和管理程序启用的。Serverless几乎没有操作系统开销,因为它只在其容器中运行内核代码和应用程序。

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

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

你可能在因特网上读过关于无服务器和供应商锁定的文章。我认为您仍然可以在应用程序的体系结构中控制这些方面。无服务器计算有许多好处——出色的性能、简单的设置以及快速的开发和部署。这就是为什么serverless在我的工具箱中成为构建高性能应用程序的一个重要工具,该应用程序可伸缩性好,同时保持低成本。如果你还没有尝试过serveless,你应该试试。首先探索无服务器应用程序模型。