BaaS 是 Backend as a Service 的缩写, “后端即服务”
FaaS 是 Function as a Service 的缩写, “函数即服务”

之前提到Serverless 把后端架构的工作全部包揽下来,硬件的维 护、集群的管理、运行环境的搭建、全部由云平台完成,除此之外,像缓存、数据库、文件存储、消息 中间件等,也全部由云平台帮我们做好,封装起来,以接口的形式提供服务,这就是 BaaS,所谓后端即 服务。对于开发者,BaaS 就是一个黑盒,你不用知道我怎么做,更不需要关心我如何做,你需要什么 过来拿就行了

但是,我需要向数据库存一条数据,用户上传的照片我需要裁剪以后存到文件存储中,这是需要我们编 写业务逻辑代码完成的功能,假设我现在已经把这些逻辑代码写好,用的是 Node.js ,前面说所有的服 务器及运行环境都放在了 BaaS 这个黑盒子中,我怎么让这些代码运行呢?换句话说就是,我现在写的 逻辑代码,是需要 Node.js 这个运行环境的,怎么办?我们只需要将写好的代码,交个 Serverless 就行 了,Serverless 中有专门运行我们的逻辑代码的地方,这个地方就是 FaaS,FaaS 是以函数的方式运行 我们的代码的,本质上 FaaS 就是一个函数运行平台,大多数的 Serverless 云平台提供的 FaaS ,都支 持 Node.js、Python、Java、PHP 等编程语言,你可以选择你喜欢的编程语言编写函数并运行。

对于开 发者老说,使用 FaaS 几乎就是使用 Serverless 的一切了,在 FaaS 中,我们能够体会到 Serverless 全 部的特性。

Faas的特点

1、无运维
FaaS 函数运行时,开发者对底层的服务器是无感知的,FaaS 产品会负责服务器资源的调度和运 维,这些就是我们前面说的 BaaS,这也是 Serverless 最大的特点,无运维。

2、事件驱动
FaaS 中的函数也不是持续运行的,而是通过一定的条件进行触发,比如 HTTP 事件、消息事件、 定时器事件等,产生事件的源头叫触发器,FaaS 平台会集成这些触发器,我们直接用就行,这是 FaaS 的第二个特点,事件驱动。

3、按量收费
再者就是 Serverless 的付费方式了,与其他云产品不同的是,Serverless 的付费方式是按量付费,是按 照 FaaS 函数执行次数和执行时消耗的 CPU、内存等资源进行计费的,用多少付多少,不用不付费,

4、弹性收缩
FaaS 会根据并发量自动生成多个函数实例,BaaS 会根据函数运行所需要的资源量自动调配服务器 资源,理论上的资源调用量没有上限,这也就实现了不同访问量的弹性伸缩了,而且是实时的弹性伸 缩。

image.png

基于 FaaS 和 BaaS 的架构,是一种计算和存储分离的架构。 计算由 FaaS 负责,存储由 BaaS 负责,计 算和存储也被分开部署和收费。这使应用的存储不再是应用本身的一部分,而是演变成了独立的云服
务,降低了数据丢失的风险。而应用本身也变成了无状态的应用,更容易进行调度和扩缩容。
基于 FaaS 和 BaaS ,应用就实现了自动弹性伸缩、按量付费、不用关心服务器,这正是 Serverless 架构的必要因素。所以说狭义的 Serverless 是 FaaS 和 BaaS 的组合。