国内外的各大云厂商 Amazon、微软、Google、IBM、阿里云、腾讯云相继推出Serverless产品,Serverless实际上涵盖了很多技术,可以分为两类:BaaS和FaaS。
BaaS
BaaS(Backend as a Service,后端即服务)是指我们不再编写和/或管理所有服务端组件。与虚拟实例和容器相比,在概念上它更接近SaaS(软件即服务)。SaaS主要是业务流程的外包——HR、销售工具,或者从技术端来讲,像Github这样的产品,而BaaS则是要把应用拆分为更小的颗粒,其中一部分完全使用外部产品实现。
BaaS 服务都是领域通用的远程组件(而不是进程内的库),可以以 API 的形式使用,深受移动 App 或者单页Web app开发团队的欢迎。因为这些团队通常会使用大量的第三方服务,否则他们就要自己花很多精力做这些事情。我们来看一些例子。
Google Firebase是完全由云厂商(Google)管理的数据库,可以直接在移动或者Web应用中使用,而无须经过我们自己的中间层应用服务器。这解释了BaaS的一个方面:用服务替我们管理数据组件。
BaaS服务还允许我们倚赖其他人已经实现的应用逻辑。对于这点,认证就是一个很好的例子。很多应用都要自己编写实现注册、登录、密码管理等逻辑的代码,而其实对于不同的应用这些代码往往大同小异。完全可以把这些重复性的工作提取出来,再做成外部服务,而这正是Auth0和Amazon Cognito等产品的目标。它们能实现全面的认证和用户管理,开发团队再也不用自己编写或者管理实现这些功能的代码。
BaaS这个词是随着移动应用开发火起来的。事实上,它有时指的是MBaaS(Mobile Backend as a Service)。然而,使用完全托管在外部的产品来开发应用,这个理念并不是移动开发,或者更一般地说,前端开发,所独有的。比如,我们可以不再管理EC2机器上的MySQL数据库服务器,转而使用Amazon的RDS服务,或者我们可以用Kinesis取代我们自己的Kafka消息总线。其他数据基础设施服务还有:文件系统/对象存储(如Amazon S3)、数据仓库(如Amazon Redshift),而更面向逻辑的服务,比如语音分析(如Amazon Lex)以及前面提到的认证,也可以直接在服务端组件中使用。这其中有很多服务都可以认为是Serverless,但并非全部都是。
FaaS/Serverless计算
事实上,Serverless 还有一半是 FaaS(Function asa Service,也即函数即服务)。FaaS 是Compute as a Service(计算即服务)的一种形式。事实上,有些人(特别是AWS)说FaaS就是Serverless计算。当然,不可否认,AWS的Lambda是如今被采用得最广泛的FaaS实现。
FaaS是一种构建和部署服务端软件的新方式,面向部署单个的函数或者操作。关于Serverless许多时髦的词儿都来自FaaS。很多人认为Serverless就是FaaS,其实他们是只知其一不知其二。
我们部署服务端软件的传统方式都是这样开始的:先要有一个主机实例,一般是一个虚拟机(VM)或者容器(见图1),然后把应用部署在主机上。如果主机是VM或者容器,那么我们的应用就是一个操作系统进程。通常我们的应用里包含各种相关操作的代码——比如一个Web服务可能要收回和更新资源。
但是在一个服务器进程中,函数不是一直处于运行状态的,它们只会在需要的时候才运行,其他时间都是空闲状态(见图3)。我们可以对FaaS平台进行配置,让它为每一个操作监听特定事件。一旦该事件发生,平台就会实例化Lambda函数,然后再用这个触发事件来调用该函数。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8974 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!