Serverless 简介

近期做了一个小程序项目,后端使用了腾讯云的「云函数」,这个过程中接触了 Serverless 这一概念。
查阅和整理了一些资料之后,本文对 Serverless 做一个简介。

概念与历史

Serverless 最早来源于 2014 年亚马逊推出的 AWS Lambda,2016 年 Google Cloud 与 IBM 等厂商也陆续跟进,发布了自己的 Serverless 服务。国内的阿里云和腾讯云在这几年也已经推出了相应的产品。

和「云计算[1]类似,「Serverless」是一个由工业界提出并演化而来的概念,它并非一个纯粹的技术性概念,它往往与产品、商业模式等层面耦合在一起。

[1] Serverless 其实也属于云计算的范畴。

此类概念在早期很长的一段时间内通常没有一个明确的权威定义,不同厂商和从业人员对此也都会有自己的理解。

同时各大云服务厂商对 Serverless 的技术研究和探索还未达成统一的标准和共识,在具体实践时也有各自不同的实现方案。

所以就目前来看,Serverless 仍然处于探索和发展阶段[2]

[2] 本文初写于 2020 年 8 月

虽然 Serverless 还未有或者也难有一个权威且共识的定义。但还是可以梳理一下当前业界对 Serverless 的解读。

  • 一种服务理念或模式。这种服务理念想要实现的是:用户无需关注除了业务逻辑本身之外的主机管理、服务运维、配置等等事务。且服务实现用户按需使用,按使用计费,使用多少资源就付多少(这里是细化到了 CPU/内存等资源占用时间,即只要服务没有占用 CPU 或内存并不会计费)
  • 一种软件系统架构方法。通常称为 Serverless 架构。所谓 Serverless 架构实际上就是实现了上述 Serverless 理念的架构。
  • 一种云服务产品形态。通常称为 Serverless 产品。例如各大厂商推出的各种 Serverless 服务或能力、封装的 API 网关等产品。

当前业界最常见的 Serverless 实现方案为 FaaS(函数即服务) + BaaS(后端即服务)。经常听到的「云函数」并基于 FaaS + BaaS 的架构,如下图所示:

serverless-tencent-faas.jpg

当前不少资料在介绍 Serverless 的时候会直接介绍 FaaS 和 BaaS,但必须要认识到这只是 Serverless 的一种实现,且 FaaS 通常指的是 Serverless Computing (Serverless 计算), Serverless 其实还有 Serverless 存储等服务。

实际上正如上文所提到的,广义上的 Serverlss 服务指的所有实现了 Serverless 免运维理念的服务。

Serverless 价值

Serverless 的上述特点可以给开发人员或其他各类使用带来如下的价值:

1. 降低运营成本

  • 按需使用和执行。Serverless 只有在真正需求时(如真实请求发生时)才会被加载运行,空闲时不占用计算资源。
  • 按使用计费。Serverless 只有被执行时才会计费,日常空闲不占用计算资源,也不会产生对应费用。

2. 降低运维需求

  • Serverless 提供了一站式的云服务,用户无需处理服务器的运维工作。也无需预估资源,一切交由服务厂商进行管理和弹性扩容。

3. 开发更为高效、快捷

  • 由于 Serverless 的免运维、低成本、弹性扩容等特性,使得开发人员能够十分高效、快捷的开发出所需的应用。同时支持应用的快速迭代,缩短对应的开发周期。

Serverless 的应用

目前在哪些应用场景之下,适合 Serverless 技术呢?

1. 实时文件处理
视频、图片等文件的上传对系统的实时性和并发能力有较高要求。采用 Serverless 云函数可以对不同清晰度和分辨率(1080p、720p等)分别进行处理,适应移动网络带宽不稳定的特性。

2. 周期性的数据处理
在一些场景下,例如一些数据处理平台,经常需要周期性的批跑一些数据。这些周期性任务的非常适合使用 Serverless 服务,Serverless 的随用随付费以及强大的扩容能力,能够在必要时充分利用计算资源也能够避免资源的闲置浪费。

3. 移动及 Web 应用后端
通过云函数、API 网关等服务能够快速一站式的搭建各种互联网移动/Web 应用。且相对传统云服务方式,在扩容、弹性扩展、免运维等方面具有更强大的优势。

参考资料

无服务器计算 Wikipedia
Serverless_computing Wikipedia
从IaaS到FaaS—— Serverless架构的前世今生
Serverless(无服务)基础知识
Serverless Handbook——无服务架构实践手册
Serverless 应用开发指南
serverless-stack-com
Serverless 基本概念入门
Serverless 的运行原理与组件架构

你可能感兴趣的:(Serverless 简介)