Serverless|Serverless 架构 / 1 介绍

【Serverless|Serverless 架构 / 1 介绍】参考文献:Serverless Architectures

最早的软件产品是本地单机的,即只有客户端软件
而现代的软件产品,大多数都是由客户端与服务器端软件两部分组成的,B/S 中的浏览器照样也是客户端软件
SaaS(Software as a Service):服务器端与客户端软件(或浏览器脚本)均由乙方开发,甲方只管用
BaaS(Backend as a Service):乙方只提供后端(服务器端)服务 API,前端(客户端)还需要甲方自己负责开发
FaaS(Functions as a Service):乙方只提供运行函数式软件的容器,容器会在恰当的时候调用这些函数,甲方自己开发函数式软件与需要的客户端软件
IaaS(Infrastructure as a Service):乙方只提供虚拟化服务化之后的硬件资源,其它的一切由甲方负责
PaaS(Platform as a Service):本质上是一个 SaaS 产品,只是这个产品的作用是作为一个平台,管理与展示下边一堆 SaaS、BaaS、FaaS、IaaS 产品
Serverless 强调无服务器,即甲方不关心服务器端的硬件软件,但需要自己关心客户端软件或脚本开发
理论上与 BaaS 的意思最接近,但实际包括 BaaS 与 FaaS
一是因为在 FaaS 中甲方需要关心的服务器端内容比较轻量级,二是因为一般 BaaS 与 FaaS 产品配套出现(毕竟甲方总是需要在服务器端定制化一些逻辑)
本质上 Serverless 是云服务商用来推销 BaaS、FaaS 组合产品的营销噱头
1 介绍 Serverless 计算,简称 Serverless,在软件架构的世界里是一个热门话题
云供应商中的三巨头 —— 亚马逊、谷歌、微软 —— 都对 Serverless 有大量的投入
我们可以看到许多相关的书籍、开源项目、讨论会以及软件供应商
Serverless 是什么 像软件行业中的许多其它趋势一样,对于什么是 Serverless 没有一个明确的定义
对于新手来说,Serverless 包含两个不同但有重叠的领域:
  1. Serverless 最开始用来描述那些大量或全部采用第三方的、云托管的应用程序和服务来管理服务器端的逻辑和状态的应用程序
    通常是 “ 富客户端 ” 应用程序(如单页应用或移动端 APP)
    这些应用程序会利用巨大的云服务生态,如云数据库(如:Parse, Firebase)、鉴权服务(如:Auth0、AWS Cognito)等等
    这些类型的服务以前被描述为 “ (Mobile) Backend as a Service ”,简称 BaaS
  2. Serverless 也可以表示服务器端逻辑仍然由开发者开发的应用程序
    但和传统架构不同的是,这些应用程序运行在一个无状态的计算容器中
    这类应用程序通常是事件触发的、短暂的(可能只在被调用时运行)、完全由第三方管理的
    可以将其称为 FaaS(Functions as a Service)(注意:FaaS 这个名称最初来自 @marak 的一篇推特,现在已经不再公开可见)
    AWS Lambda 就是 Functions-as-a-Service 平台最出名的实现之一,另外还有很多其它的实现
BaaS 与 FaaS 在运维属性上有着相似之处(如:不需要自己管理服务端资源),而且经常被一起使用
大型云供应商都有同时包含 BaaS 与 FaaS 产品的 “ Serverless 系列产品 ”
例如亚马逊的 Serverless 产品页面
谷歌的 Firebase BaaS 数据库可以通过 Google Cloud Functions for Firebase 显式地支持 FaaS
Serverless|Serverless 架构 / 1 介绍
文章图片

Serverless|Serverless 架构 / 1 介绍
文章图片

关于 BaaS 与 FaaS 的结合,还有一个类似的例子
Auth0,开始时提供了实现许多用户管理功能的 BaaS 产品
然后接着又推出了相应的 FaaS 服务:Webtask
这家公司在这个思想的基础上进行了更进一步的扩展
允许其它 SaaS 和 BaaS 公司轻松地向已有产品中加入 FaaS 能力,从而让这些公司可以创建一个统一的 Serverless 产品
Serverless 名称的来历 “ Serverless(无服务器) ” 这个名称容易引起困惑,因为一个 Serverless 产品既有服务器端硬件又有运行中的服务器端软件
但与普通的方式相比,不同点在于,构建与支持一个 ‘Serverless’ 应用的组织,不用关心这些服务器端的硬件与进程
它们将这些责任外包给其他人
这个词语出现在 Ken Fromm 的一篇 2012 年的文章 中
Badri Janakiraman 说他在这段时间也听说过这个词,当时涉及的场景是:
用三方的 持续集成 与源码控制系统服务,取代在自己公司的服务器上维护
但这个用途主要是针对开发团队基础设施(即:软件团队使用的工具)的
而不是指将外部服务与开发团队开发的产品相结合的方式,而这个方式才更接近如今 Serverless 的含义
这个词在 2015 年变得越来越流行
在 2014 年 AWS Lambda 发布之后,2015 年七月亚马逊又发布了 API Gateway
这里是 Ant Stanley 根据 API Gateway 公告写的一个关于 Serverless 的例子
2015 年十月,在亚马逊 re:Invent 大会上有一个标题为 The Serverless Company using AWS Lambda 的演讲
提到了 PlayOn! Sports
Serverless|Serverless 架构 / 1 介绍
文章图片

将近 2015 年的年末,‘Javascript Amazon Web Services (JAWS)’ 开源项目将自己改名为 Serverless Framework
到 2016 年年中,Serverless 已经成为这个领域中占主导地位的名词,进而诞生了 Serverless Conference 系列
各种各样的 Serverless 供应商,开始从产品市场到职位描述的每一件事情拥抱这个名词
Serverless 逐渐作为一个专有名词固定下来
参考文献:Serverless Architectures

    推荐阅读