什么是 Serverless 架构

随着云服务的发展,计算资源被高度抽象化,从物理机到云服务器,再到容器服务,计算资源逐渐变得更加细腻化。

2012年,Iron.io的副总裁Ken Form在文章《Why The Future of Software and Apps is Serverless》中首次提出了无服务器的概念,并指出“即使云计算的已经逐渐的兴起,但是大家仍然在围绕着服务器转。不过,这不会持续太久,云应用正在朝着无服务器方向发展,这将对应用程序的创建和分发产生重大影响”;2019年,UC Berkeley发表论文《Cloud Programming Simplified: A Berkeley View on Serverless Computing》,在文章中,作者犀利断言“新的BaaS存储服务会被发明,以扩展在Serverless计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久可供选择。基于 Serverless 计算的价格将低于 Serverful 计算,至少不会高于 Serverful 计算。Serverless 计算一旦取得技术上的突破,将会导致 Serverful 服务的下滑。Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,因此也意味着服务器 - 客户端模式的终结。”。

Serverless架构从2012年的首次走进大众视野到2019年成为UC Berkeley对云计算领域犀利断言的主角,Serverless架构利用了7年的时间,完成了从一个“新的观点”向“万众瞩目的架构”转身,在这7年之间,Serverless架构从鲜为人知,到被商业化应用,再到头部云厂商纷纷布局Serverless架构作为云计算战略,Serverless架构逐渐的成为了人尽皆知的新的技术范式。当然,在这7年之间,Serverless不仅仅技术架构在逐渐的升级和完善,其概念也是越发的明确,其目标和方向也是逐渐的清晰明朗起来。

关于Serverless的定义,Martin Fowler在《Serverless Architectures》一文中认为Serverless实际上是BaaS与FaaS的组合。这个简单明了的定义,也逐渐的奠定了Serverless组成结构的基础。

什么是 Serverless 架构

如图所示,Martin Fowler认为,在Serverless架构中,应用的一部分服务端逻辑依然由开发者完成,但是和传统架构不同,它运行在一个无状态的计算容器中,由事件驱动、生命周期很短(甚至只有一次调用)、完全由第三方管理,这种情况称为 Functions as a service / FaaS。AWS Lambda 是目前的热门 FaaS 实现之一;除此之外,Serverless架构还要有部分依赖于第三方(云端)应用或服务来管理服务器端逻辑和状态的应用,这些应用通常是富客户端应用(单页应用或者移动端 App),建立在云服务生态之上,包括数据库(Parse、Firebase)、账号系统(Auth0、AWS Cognito)等,而这些服务最早被称为 “(Mobile) Backend as a Service”,即我们所认为“BaaS”部分。

在同样认为Serverless有FaaS与BaaS结合而成的同时,CNCF在g对Serverless架构的定义进行了进一步完善描述:Serverless是指构建和运行不需要服务器管理的应用程序概念。它描述了一种更细粒度的部署模型,其中将应用程序打包为一个或多个功能,上传到平台,然后执行、扩展和计费,以响应当时确切的需求。与此同时,在2019年UC Berkeley的文章《Cloud Programming Simplified: A Berkeley View on Serverless Computing》中也同样从Serverless架构特性的角度,对什么是Serverless也进行了补充描述和定义:简单地说,Serverless = FaaS + BaaS。在对于被认为是Serverless的服务,它必须具备弹性伸缩和按量付费的特点;在信通院云原生产业联盟所发布的《云原生发展白皮书(2020年)》中对Serverless的概念也有相关的描述:无服务器(即Serverless)是一种架构理念,其核心思想是将提供服务资源的基础设施抽象成各种服务,以 API 接口的方式供给用户按需调用,真正做到按需伸缩、按使用收费。这种架构体系结构消除了对传统的海量持续在线服务器组件的需求,降低了开发和运维的复杂性,降低运营成本并缩短了业务系统的交付周期,使得用户能够专注在价值密度更高的业务逻辑的开发上。至此,Serverless架构从结构上,行为上以及特性上的定义,就可以总结成下图的形式:

什么是 Serverless 架构

上一篇:冷启动优化:开发者侧降低冷启动影响的方案


下一篇:Serverless架构特点 (下)