Serverless是什么

本文涉及的产品
简介: 小陈向大刘请教Serverless,了解到Serverless是种云原生开发模式,重点在于FaaS(函数即服务)和BaaS(后端服务),让开发者专注于业务逻辑,而无需管理服务器等基础设施。Serverless并非无服务器,而是将服务器运维工作交给云厂商。FaaS是代码托管服务,例如阿里云的函数计算,提供敏捷、弹性、可靠且成本效益高的计算服务。BaaS则是通过API调用第三方服务,如数据库访问。Serverless与传统架构相比,减少了开发者的负担,提高了效率,降低了成本,并增强了安全性。

Serverless的基本概念

小陈对Serverless有了一个初步了解,为了快速抓住Serverless核心思想,合理安排学习和实验,早点完成调研,他打算向大刘讨教学习建议。

小陈:师傅,我觉得计算模式的演变方向就是不断提升生产力,从物理机发展到虚拟机,再到容器化,现在又发展到了Serverless,且还在不断进步中,是这样吧?

大刘:是啊,技术发展的方向就是让开发人员的工作,慢慢回归到编写业务逻辑代码的本职工作,趋势是越来越聚焦。

小陈:不过,我看了一些Serverless的学习资料,感觉理解起来有些困难,概念比较抽象,感觉离平时工作和学习还有些距离,不容易抓住其要领。

大刘:这是正常现象,不必焦虑。我先给你简单讲一讲,业界普遍对Serverless的理解就是FaaS(Function as a Service,函数即服务)与BaaS(Backend as a Service,后端即服务)的结合。通俗的说,就是把业务逻辑放到FaaS中去执行,比如应用的核心功能;而不能放到FaaS中的部分则封装成BaaS服务,以API形式提供调用,比如数据库访问、认证鉴权等。FaaS和BaaS结合在一起,共同实现传统应用程序的完整功能。FaaS产品化后被称为函数计算,是Serverless中比较常见和通用的产品,我建议可以围绕着函数计算去学习Serverless,学习曲线会平缓一些,学习效率也会提高。

小陈:懂了。难怪各云平台这两年都在大力推广函数计算,如阿里云的函数计算FC、AWS的Lambda等。

大刘:是这么回事。

小陈:好,那我就先从函数计算入手去学习Serverless。

Serverless是什么

Serverless的中文含义是服务器是一种云原生开发模式,可使开发人员专注构建和运行应用,而无需关注和管理服务器等底层基础设施及其运维。事实上,Serverless并不是真的不需要服务器,而是把服务器从应用开发中抽离出来了,转由云厂商接管相应的置备、维护和扩展等工作

我们知道,计算模式中有自建基础设施、IaaS和PaaS,这些是基于服务器运行应用程序的Serverful模式。Serverless这些计算模型的区别在于,Serverless无需关注与业务逻辑无关的部分,从繁重的底层资源的管理运维中解放了开发人员的精力,将业务逻辑无关的部分工作交给厂商去管理,包括基础架构和应用扩展、管理运维等工作。

几种不同的开发模式比较

在Serverful模式中,用户需要预先购买资源,根据业务负载的波动动态调整资源的规模,在业务空闲时段仍要保留一定的运行资源,以保证负载增长时可以扩容,存在一定程度的资源浪费。此外,还要管理操作系统、安全补丁、负载平衡、容量规划、资源扩展、日志和监控等工作。与之相反,Serverless模式下的Serverless平台会自动分配和销毁资源,在某些时候可以将资源缩减到而不再产生任何费用,将代码开发之外的工作都转移给厂商,释放了开发人员的生产力。

那么,Serverless架构是如何构成的呢?按照 CNCF(云原生基金会) 对 Serverless 计算的定义,Serverless 架构 FaaS(函数即服务)和 BaaS(后端服务)结合而成,如下图。

我们使用各种计算模式,就是为了实现特定业务目的。举一个日常出行的例子,我们的出行目标是从A地到B地,然而为了实现这个目标,往往有几种不同的出行交通方式:

  • 我们购买物理服务器,就好比我们自己买了一辆车直接开过去,显然,这种方式投入大、还需要持续进行车辆维护。
  • 我们也可以使用虚拟机,这就好比租一辆车,自己开过去,这种方式下租用期间的维护也很头疼。
  • 当然,我们也可以使用Serverless,就好比直接打车过去,这是最简单愉快的方式了,只需告诉出租车师傅去哪里,到了目的地,按实际费用支付即可。
  • 另外,我们还可以使用SaaS,就像是通过公共交通,只是SaaS都是通用场景的实现,不会根据我们目标做调整,所以难免会遇到各种换车,不可避免的要走很多路花很多时间。

计算模式与出行模式的类比

从这个例子来看,我们要实现业务目标,最关心的就是快捷实现,选择Serverless就像叫车一样,可以非常便捷地把我们送到目的地。

   CNCF非常看好Serverless发展前景,认为Serverless会加速云原生的普及并将云原生创新性提升到一个新高度。在CNCF(云原生计算基金会)官网上的云原生全景图(如下)中,我们发现Serverless是一个单独的分类,处于显著的位置(右上角),足见CNCF对Serverless的重视。

什么是FaaS?

FaaS 即 Functions as a Service,函数即服务,是Serverless架构的一种形态,面向函数编程,基于事件驱动提供云服务之间端到端的解决方案。借助FaaS开发人员可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。FaaS是Serverless模型中代码的托管计算服务。阿里云的函数计算、AWS Lambda  FaaS 产品,其中阿里云的函数计算是Serverless先行者,下面我们简单了解一下。

函数计算(FC)是一种以事件驱动的全托管计算服务,开发人员只需编写代码并上传,函数计算就会自动准备好计算资源,以弹性、可靠的方式运行代码,并提供日志查询、性能监控和报警等功能,大幅简化开发运维过程。函数计算的资源调度与运行是以函数(Function)为单位函数由函数代码和函数配置构成。

函数计算具备如下优势:

  • 敏捷:编写函数即可执行;
  • 弹性:毫秒级自动伸缩;
  • 可靠:多可用区高可用;
  • 成本:按量计费,具有竞争力的成本;

函数计算的典型应用场景,包括Web应用、数据ETL处理、AI推理、视频转码等。

什么是BaaS?

BaaS 即 Backend as a Service,后端即服务,一般是通过API调用后端或别人已经实现好的程序逻辑,通常用来管理数据。我们通常将核心业务逻辑运行在FaaS上,而其他部分逻辑则是通过应用编程接口(API)调用第三方的服务和应用来实现,典型的如云厂商提供的认证服务、额外加密、云访问数据库等服务。

理解BaaS,需要搞清楚它与PaaS的区别。BaaS是仅提供应用依赖的第三方服务,而PaaS(Platform as a Service)则需要参与应用的生命周期管理。典型的PaaS平台需要提供手段让开发者部署和配置应用BaaS则通常不包含这些内容。从功能上讲,BaaS可以看作PaaS的一个子集,即提供第三方依赖组件的部分。BaaS还允许我们依赖其他人已经实现的应用逻辑认证服务就是一个很好的例子。

Serverless架构与传统架构的区别

在传统模式下开发应用,开发人员要包办代码开发及运行环境等方方面面,如购买服务器,准备运行环境、安全加固,购买并配置接入层软件,再将代码包发布到配置好的环境中,进行必要的应用设置及中间件的安装及配置后,才可以提供给用户使用。

应用传统开发模式

到了Serverless模式下,开发人员不需要购买服务器、接入层软件,也无需进行运行环境、应用程序的安全加固与各种繁琐的配置,只需将开发好的代码上传到函数计算平台,配置好触发器规则,然后函数计算中的代码将根据用户的访问自动触发执行。在Serverless下,开发人员只要专注于核心业务代码的开发,无需关注开发以外的其他非功能性工作,对开发人员更加友好。

应用Serverless开发模式

Serverless的典型特征和优势

我们使用Serverless平台,是将开发完成的代码部署到Serverless服务中,比如函数计算。当驱动函数计算执行的事件触发后,函数计算会自动响应并执行代码,根据计算需要自动实现资源的分配与释放,并按照实际使用量结算资源使用费用。因此,对Serverless而言,不执行任务就不会产生费用。所以,Serverless具备弹性伸缩与按量收费两个显著特征

在Serverless架构中,用户已经“看不到”传统架构中存在的服务器、虚拟机、容器等底层资源了,所以被称为 Serverless“无服务器”也并不违和。

Serverless减少了开发人员的工作量,具备自适应弹性,让应用更轻松应对业务负载不可预测或突发流量的情况,Serverless具有如下显著优势:

  • 效能提升:只聚焦开发核心业务代码,复用第三方BaaS能力,效率高、上市快,研发效能提高。
  • 安全提升:容器运行时及以下的安全由云厂商提供安全保障,大幅提升安全能力
  • 成本降低:资源用量更少、利用率更高。同时,研发成本大幅下降。
  • 生产力驱动:聚焦业务逻辑,解放非业务领域的耗散。
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
运维 Serverless 虚拟化
为什么需求Serverless
公司计划在网站上引入AIGC技术以增强用户互动,但担忧开发周期长和成本高。技术负责人建议使用Serverless技术,这种模式允许只关注核心代码开发,减少资源管理和运维成本,适应快速、低成本的需求。小陈将负责调研Serverless在AIGC应用中的可行性,以实现更高效、节省资源的开发。Serverless的核心是让开发者专注于业务逻辑,减少非必要技术问题的处理,符合开发人员期望的开发模式。
42 6
|
8月前
|
存储 安全 物联网
Serverless 是什么?
Serverless 是什么?
117 0
|
9月前
|
弹性计算 监控 Java
Serverless
Serverless应用引擎SAE(Serverless App Engine)是一个全托管、免运维、高弹性的通用PaaS平台。SAE支持Spring Cloud、Dubbo、HSF、Web应用和XXL-JOB、ElasticJob任务的全托管,零改造迁移、无门槛容器化、并提供了开源侧诸多增强能力和企业级高级特性。
99 3
|
11月前
|
运维 监控 搜索推荐
什么是Serverless
自2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次提出“云计算”(Cloud Computing)的概念之后,云计算的发展可以用日新月异这个词来形容。那么究竟什么才是Serverless呢?
76 0
|
架构师 物联网 Serverless
什么是Serverless? #110
什么是Serverless? #110
54 0
|
Serverless
什么是 Serverless——与 Serverless 相对的是 Serverfull
什么是 Serverless——与 Serverless 相对的是 Serverfull自制脑图
94 0
什么是 Serverless——与 Serverless 相对的是 Serverfull
|
运维 Kubernetes Cloud Native
什么是serverless
什么是serverless
116 0
|
消息中间件 Kubernetes 前端开发
Serverless是什么?
Serverless是什么?
290 0
Serverless是什么?
|
Serverless
Serverless 新旧观念的转变
Serverless 新旧观念的转变自制脑图
59 0
Serverless 新旧观念的转变
|
Serverless
Serverless
Serverless 自制脑图
92 0
Serverless