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 组成结构的基础。
如上图所示,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 架构从结构上,行为上以及特性上的定义,就可以总结成下图的形式:
版权声明: 本文为 InfoQ 作者【刘宇】的原创文章。
原文链接:【http://xie.infoq.cn/article/73a9595573cac8287cb09e6c6】。文章转载请联系作者。
评论