Kubernetes vs. Serverless并非零和游戏?

时间:2022-05-13 13:28:03

作为令人兴奋和强大的平台,KubernetesServerless完全配得上现在的地位。它们可以通过多种方式为组织提供敏捷性、可扩展性和计算性能方面的巨大提升。但是,我们很容易忘记Kubernetes提供了Serverless所没有的优势,反之亦然。成功部署两者的关键是知道何时以及如何确定Kubernetes或Serverless是否提供最佳匹配。

Kubernetes

Kubernetes本身就是为云规模的计算而设计的 ,就像谷歌那样的大规模部署。它已被改编为可以小规模使用,现在大多数大型云提供商都提供该服务——这可以解释Kubernetes在过去几年中的爆炸性增长。根据CNCF的用户调查,Kubernetes的增长远远超过了所有其他形式的编排软件。

Kubernetes vs. Serverless并非零和游戏?

Kubernetes已成为主流。但正如从大型机转移到客户端服务器一样痛苦,采用完全基于容器的架构仍然存在重大痛点,即使是由Kubernetes编排的架构。扩展不是即时的——你必须等待容器上线,而且仍然存在重大的管理问题。根据CNCF,存储、安全和网络问题是通过Kubernetes部署其架构的人们最关注的问题。

Kubernetes vs. Serverless并非零和游戏?

Serverless

Serverless架构(在很多方面只是对微服务架构的重新打包和重新镜像),正在与Kubernetes竞争,因为它允许扩展应用程序和部署,而不会出现Kubernetes甚至容器的复杂性和配置问题。

功能即服务(FaaS)Serverless架构仍然需要服务器来运行,更是事件驱动的架构,而容器化应用程序本质上仍然是相当传统的应用程序,只是分成许多较小的部分或服务。使用容器化应用程序,它永远不会完全关闭。即使没有人访问它,容器仍然需要存在并运行。你可以将它们缩小到单个实例,但它们仍然存在并仍然需要成本。

Serverless应用程序,如果没有任何功能请求,可以将成本降低到零。除非明确访问它们,否则它们基本上不再存在。这可以显著降低成本,并且缩放速度也更快。对Serverless应用程序的访问越多,它就扩展得越大。

但Serverless架构将取代容器化应用程序的想法并不合理。并非一切都可以简化为短暂的功能。某些应用程序总是需要能够在一个应用程序运行时保持数据和状态,而这不是Serverless架构的设计目的。

不过,对Serverless的兴趣却在快速增长。根据MarketsandMarkets Research的数据,FaaS市场预计将从2016年的1.88美元飙升至2021年的77.2亿美元。

然而,这不是一场零和游戏,Serverless的增长并不一定预示着Kubernetes和容器的死亡。实际上,它甚至可能扩展Kubernetes的使用,至少可以成为主要的FaaS提供商扩展其Serverless产品的方法。

Serverless架构很可能通过仅仅支付使用的服务而不支付运行一个容器或一组容器所需的开销来进一步降低成本,但是就像所有事情一样,需要进行权衡。不经常访问的Serverless代码虽然运行成本不高,但在运行时(如Java)或底层容器用于服务请求的情况下,可能会遇到延迟增加的问题。这些额外的延迟可能令人无法接受。

然而,从开发人员的角度来看,FaaS可以提高生产力和开发人员的幸福感。开发人员可以更快地将代码分成更小的部分推送到生产中,而无需配置和管理开销,从而提高生产力。

结论

应用程序开发和部署策略,都在不断发展。通常,从一个架构到另一个架构的转移标志着第一个实现的结束,但并非总是如此。至少目前,还没有一个通用的解决方案可以解决在廉价和大规模交付应用程序时遇到的所有问题。与任何部署模型一样,需要在成本、性能和可管理性之间进行权衡。

Kubernetes 以及一般的容器化有其优势,Kubernetes市场的迅速普及和发展证明了它正在满足市场需求。容器化和容器编排需求不会很快消失,但它并不总是正确的解决方案。

Serverless的FaaS填补了市场的需求,并且整体上呈现出显著增长。当然,增长并不一定意味着满足了目的,但市场倾向于自我纠正以弥补这。

Kubernetes vs.Serverless不是零和游戏。Serverless的增长并不表示Kubernetes的死亡。它们在现代应用程序的开发和部署中都发挥着重要作用。在过去的20年中,应用程序部署一直朝着更小、更易管理、更具成本效益和更开发人员友好的架构迈进,没有理由怀疑这种趋势不会持续下去。虽然Serverless可能是将应用程序抽象到其最基本组件的逻辑结论,但并非所有应用程序都能以这种方式提供。与此同时,由于持久性或可扩展性的原因,某些应用程序需要容器,需要编排和管理。

所以说,这两种技术都没有理由不继续显著增长。