选择Serverless还是Kubernetes?这种争辩并没有意义

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月15万CU 3个月
简介: 这篇文章作者分别阐述了Kubernetes与Serverless的优缺点,实际上两者可能并不是竞争关系,在某些架构中,两者可以同时存在以满足不同的需求。但是最终的目的都是为了使应用程序部署更方便快捷,更易管理,更具成本效益以及对开发人员友好。
这篇文章作者分别阐述了Kubernetes与Serverless的优缺点,实际上两者可能并不是竞争关系,在某些架构中,两者可以同时存在以满足不同的需求。但是最终的目的都是为了使应用程序部署更方便快捷,更易管理,更具成本效益以及对开发人员友好。

Kubernetes和Serverless都是令人兴奋的强大的平台,它们可以通过多种方式为企业在敏捷性,扩展性以及计算性能上获取巨大的提升。但是,不要忘记Kubernetes能提供一些Serverless所没有的功能,反之亦然。成功部署其中任何一个方案的关键点在于哪种技术更适用于当前的场景。

Kubernetes的兴起

Kubernetes是为大规模的云计算设计的,一开始就是因为Google使用了超大规模的部署才开发了Kubernetes。之后Kubernetes被改造成可以小规模使用,并且适用于大多数大型云提供商,这归功于它过去几年迅猛的发展。根据Cloud Native Computing Foundation(CNCF)的用户调查,Kubernetes的增长远超过所有其他形式的编排软件。

自首次亮相以来,Kubernetes已成为主流。但是,正如从主机迁移到客户端服务器上总会遇到各种问题,在采用完全基于容器架构的过程中也依然会遇到各种问题,尽管这种容器架构是由Kubernetes进行编排的。容器扩展并不是实时的,你需要等到容器上线,同时你也必须处理容器管理问题。据CNCF调查表明,存储,安全以及网络问题仍然是通过Kubernetes部署其架构的程序员最关心的问题。

那么选择Serverless呢?

Serverless架构,在很多方面只是对微服务架构的重新打包和重新构想,这种架构正在与Kubernetes形成竞争,因为它允许扩展应用程序和部署,无需担心复杂性和配置问题。这两个问题正是使用Kubernetes和容器的痛点。 但不要把两者当做一样的。

Serverless也被称为功能即服务(FaaS),Serverless体系结构仍然需要运行服务器,但是它是事件驱动的架构,相比之下,容器化应用程序本质上仍然是传统的应用程序,只是分成许多较小的部分或服务。

使用容器化的应用程序,它永远不会完全关闭。即使没有人访问它,容器仍然需要存在并运行。你可以将它们缩小到单个实例,但它们仍在运行并需要花钱。



一个Serverless应用,如果没有请求使用它的功能,那么它的成本可能降低到零,实际上如果没有请求,它们会停止运行,这可以显著的降低成本,并且有利于更迅速的伸缩。访问Serverless程序的请求越多,它的体量就会变得越大。

关于Serverless架构会取代容器化的应用程序的想法似乎是一个不合理的建议,并非一切功能都能被简化成一个短暂的功能(function)。一些程序需要在应用程序运行时持久化数据以及状态,Serverless的设计很难满足这种需求,但是大家对Serverless的兴趣却在快速增长。

例如,根据MarketsandMarkets Research的数据,FaaS(Function as a Service)市场预计将从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可能是将应用程序抽象到其最基本组件的逻辑结论,但并非所有应用程序都能以这种方式抽象出来。同理可得,出于对持久性和可伸缩性的需求,某些应用程序将会需要容器,需要容器的编排和管理。

如果这两种技术没有直接相互竞争,它们很难不会有持续性的显著增长。

本文转自DockOne-选择Serverless还是Kubernetes?这种争辩并没有意义

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
弹性计算 Kubernetes 安全
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
144 8
|
1月前
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之ACK/ASK支持ECI的Serverless Container如何解决
Kubernetes 的架构问题之ACK/ASK支持ECI的Serverless Container如何解决
76 7
|
1月前
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
68 6
|
1月前
|
Kubernetes 安全 Serverless
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
62 5
|
1月前
|
运维 Kubernetes 大数据
Kubernetes 的架构问题之在Serverless Container场景下尚不支持资源超售如何解决
Kubernetes 的架构问题之在Serverless Container场景下尚不支持资源超售如何解决
52 0
|
16天前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
101 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
16天前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
33 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
16天前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
33 7
|
16天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
25 5
|
16天前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
35 2

热门文章

最新文章

相关产品

  • 函数计算