华为Serverless核心技术与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 Serverless的定义

那么Serverless到底是什么呢?维基百科将Serverless定义为一种云计算执行模型。

• 云服务商按需分配计算机资源,开发者无须运维这些资源,不用关心容器、虚拟机或物理服务器的容量规划、配置、管理、维护、操作和扩展。

• Serverless计算无状态,可在短时间内完成计算,其结果保存在外部存储中。

• 当不使用某个应用时,不向其分配计算资源。

• 计费基于应用消耗的实际资源来度量。

CNCF(Cloud Native Computing Foundation,云原生计算基金会)认为Serverless旨在构建和运行不需要服务器管理的应用程序,二者的不同之处在于它描述了一个更细粒度的部署模型,能够以一个或多个函数的形式将应用打包并上传到平台执行,并且按需执行、自动扩展和计费。

Serverless并不意味着不需要服务器来托管和运行代码,也不意味着不再需要运维工程师。Serverless是指开发者不再需要将时间和资源花费在服务器调配、维护、更新、扩展和容量规划上,这些任务都由Serverless平台处理,开发者只需要专注于编写应用程序的业务逻辑,运维工程师能够将精力放在业务运维上。综合维基百科和CNCF的定义,可以认为Serverless是一种云计算执行、部署和计费模型,Serverless服务按请求为应用分配资源,按照使用计费,基础设施全托管(无须关心维护、扩容等)。

目前,Serverless服务主要分为FaaS和BaaS。

• 函数即服务(Function as a Service,FaaS):开发者实现的服务器端应用逻辑(微服务甚至粒度更小的服务)以事件驱动的方式运行在无状态的临时容器中,这些容器和计算资源完全由云提供商管理。如图1-7所示,从开发者角度来看,FaaS和IaaS/PaaS相比,其扩容的维度从应用级别降低到函数级别,开发者只需关心和维护业务层面的正常运行,其他部分如运行时、容器、操作系统、硬件等,都由云提供商来解决。

图1-7 FaaS与IaaS、PaaS的区别

• 后端即服务(Backend as a Service,BaaS):基于API的三方服务,用来取代应用程序中功能的核心子集。由于这些API是作为自动扩展和透明运行的服务提供的,因此从开发者和运维工程师的角度来看似乎是无服务器的。非计算类的全托管服务,如消息队列等中间件、NoSQL数据库服务、身份验证服务等,都可以认为是BaaS服务。

FaaS通常是承载业务逻辑代码的服务,开发者会更为关心,它也是本书重点介绍的内容。