【编者按】本文作者分别阐述了Kubernetes和Serverless的优缺点。事实上,两者未必是竞争关系。在某些架构中,两者可以同时存在以满足不同的需求。但最终目标是使应用程序部署更轻松、更快速、更易于管理、更具成本效益并且对开发人员友好。Kubernetes和Serverless都是令人兴奋且功能强大的平台,可以通过多种方式为企业提供敏捷性、可扩展性和计算性能方面的巨大改进。但是,不要忘记Kubernetes可以提供一些Serverless无法提供的功能,反之亦然。成功部署任何这些选项的关键是哪种技术更适合当前场景。Kubernetes的兴起Kubernetes是为大规模云计算而设计的。它最初是因为谷歌使用超大规模部署而开发的。得益于过去几年的快速发展,Kubernetes已经适应了小规模使用,适用于大多数大型云提供商。根据云原生计算基金会(CNCF)的一项用户调查,Kubernetes的增长速度远远超过所有其他形式的编排软件。自首次亮相以来,Kubernetes已成为主流。然而,就像从大型机迁移到客??户端服务器时总是会出现问题一样,采用完全基于容器的架构时仍然存在问题,即使它是由Kubernetes编排的。容器伸缩不是实时的,需要等到容器上线,还要处理容器管理的问题。根据CNCF的调查,存储、安全和网络问题仍然是程序员通过Kubernetes部署其架构时最关心的问题。那么无服务器呢?无服务器架构,在很多方面只是微服务架构的重新打包和重新构想,正在与Kubernetes竞争,因为它允许扩展应用程序和部署,而无需担心复杂性和配置。这两个问题正是使用Kubernetes和容器的痛点。但不要把两者一视同仁。无服务器也称为功能即服务(FaaS)。无服务器架构仍然需要运行服务器,但它是一个事件驱动的架构。相比之下,容器化应用本质上还是传统的应用,只是分成了很多更小的应用。小份或份量。对于容器化应用程序,它永远不会完全关闭。即使没有人访问它,容器仍然需要存在和运行。您可以将它们缩减为单个实例,但它们仍在运行并需要花钱。一个无服务器应用程序,如果没有请求使用它的功能,它的成本可能会降低到零。事实上,如果没有请求,它们将停止运行。这可以显着降低成本并促进更快的扩展。访问无服务器程序的请求越多,它的大小就会变得越大。无服务器架构将取代容器化应用程序的想法似乎是一个不合理的建议,即并非所有内容都可以简化为临时功能。一些程序需要在应用程序运行时持久化数据和状态。Serverless的设计很难满足这个要求,但是大家对Serverless的兴趣正在快速增长。例如,根据MarketsandMarketsResearch的数据,FaaS(功能即服务)市场预计将从2016年的1.88美元飙升至2021年的77.2亿美元。然而,这不是零和游戏(即参与游戏的个体必须通过其他个体的损失获得收益,所有个体不能同时获得或损失),serverless的增长并不一定预示着Kubernetes和容器的消亡。事实上,它甚至可能有助于扩展Kubernetes的使用,至少对于主要的FaaS提供商及其无服务器产品来说是这样。无服务器架构可能会通过只为使用的服务付费而不支付运行一个容器或一组容器所需的开销来进一步降低成本,但需要做出权衡,不经常访问的无服务器代码并不昂贵跑步。如果运行时(如Java)或底层容器用于服务请求,您可能会遇到延迟增加的情况。这些额外的延迟可能是不可接受的。从开发者的角度来看,FaaS可以大大提高效率,让程序员的开发过程更加愉快。程序员可以更快地将小块代码推送到生产环境,而不必担心配置和管理的开销,从而提高生产力。结束语应用程序开发和部署策略在不断发展。通常,从一个模式迁移到另一个模式标志着第一个模式的结束,但情况并非总是如此。至少就目前而言,对于低成本、大规模交付应用程序遇到的所有问题,还没有一种放之四海而皆准的解决方案。与任何部署模型一样,架构师需要在成本、性能和可管理性之间进行权衡。Kubernetes——和其他容器化技术——已经有了应有的地位,Kubernetes市场的快速采用和增长证明它正在满足市场需求。虽然我没有看到容器化的必要性,但容器编排如果不是这样就没有意义,而且这个解决方案并不总是有效。同样,ServerlessFaaS显然满足了市场的需求,并在整体上显示出显着的增长。当然,增长并不一定意味着合适,但市场往往会自我修正来弥补。同样,Kubernetesvs.Serverless也不是零和游戏。Serverless的发展并不意味着Kubernetes的消亡。每种技术在现代应用程序的开发和部署中都扮演着重要的角色。在过去的20年中,应用程序部署一直在朝着更小、更易于管理、更具成本效益和对开发人员友好的架构发展,毫无疑问,这一趋势将继续下去。虽然无服务器可能是将应用程序抽象为最基本组件的合乎逻辑的结论,但并非所有应用程序都可以通过这种方式进行抽象。同样的,由于持久化和可扩展性的需要,一些应用会需要容器,这就需要容器编排和管理。如果这两种技术没有直接相互竞争,就很难不看到持续的显着增长。译者介绍Grace,程序员,研究生毕业于纽约州立大学石溪分校,目前就职于LinktimeCloud公司,对大数据技术和数据可视化技术感兴趣。
