Module 03 · Serverless Overview
Introduction to the FaaS Model功能即服务(FaaS)模型简介
什么是 FaaS?
FaaS (Function-as-a-Service,功能即服务) 是一种云计算服务类型,它允许您执行代码以响应事件,而无需处理通常与构建和启动微服务应用程序相关的复杂基础设施。
FaaS 的核心特征
FaaS 是 Serverless Computing 的一个子集,具有以下特点:
- 应用创建: 以多个函数的形式创建应用程序,其中函数是使用任何编程语言编写的一段软件。
- 部署环境: 可部署在混合云以及本地环境(on-premises environments)。
- 状态管理: 它是无状态(stateless)的,但可以通过使用外部缓存来维护状态。
- 性能与伸缩:
- 函数在毫秒级执行。
- 以并行方式处理单个请求,因此可以即时(instantaneously)伸缩。
- 架构: 它是轻量级的,使用解耦架构机制。
- 计费模式: 按运行函数所花费的时间计费,而不是按服务器实例大小计费。
FaaS 模型的益处与优势
使用 FaaS 模型可以实现以下优势:
- 基础设施解耦: 您可以将服务器划分为可以自动且独立伸缩的函数,从而无需管理基础设施。
- 这使得您可以专注于应用程序代码,从而缩短产品上市时间(time-to-market)。
- 成本效益:这是 FaaS 模型的最大好处之一。
- 您只在发生动作时付费。当动作完成后,一切停止运行——没有代码运行、没有服务器空闲,也就没有成本产生。
- 即时伸缩性: 由于函数是无状态、小型且独立的代码片段,它们可以根据需要自动、独立、即时地进行伸缩。如果需求下降,它们也会自动缩减。
- 高可用性(HA): FaaS 提供了固有的高可用性,因为它分布在多个区域和可用区,并且可以无需增量成本进行部署。
Serverless 堆栈的组成
一个 Serverless 堆栈由三个主要组件组成 :
- 功能即服务 (FaaS)
- 后端即服务 (BaaS)
- API 网关
Serverless 堆栈的工作流程

- 请求接收: 事件请求从不同渠道(如 HTTP 请求、来自 GitHub 或 Docker Hub 等仓库的 Webhook、以及计划作业)接收。
- API 网关: 这些请求通过 API 网关,网关识别并将它们转发给各自的函数(FaaS)。
- 函数处理: 函数处理这些请求。如果需要,请求会进一步导向 后端服务 (BaaS)(如文件和对象存储、块存储、通知服务等)进行进一步处理和/或存储。
- 响应返回: 输出或响应随后通过 FaaS 组件和 API 网关发送回客户端。
实际应用示例:图像处理
场景: 上传个人资料图片到网站,网站需要该图片的缩略图。

- 用户操作: 用户选择个人资料照片。
- 上传存储: 图像被上传到对象存储桶。
- 触发函数: 此事件触发一个 FaaS 函数(例如 IBM Cloud function)。
- 函数处理: 该函数处理原始照片并创建缩略图。
- 存储结果: 函数将缩略图图像存储回对象存储,供网站访问。
FaaS 的原则与最佳实践
- 单一职责: FaaS 函数应设计为响应一个事件执行单一工作。
- 确保您的代码范围有限、高效且轻量级,以便函数加载和执行迅速。
- 函数隔离: FaaS 的价值在于函数的隔离。
- 函数过多会增加您的成本,并消除函数隔离的价值。
- 最小化依赖: 使用过多的第三方库可能会减慢函数的初始化速度,并使其更难伸缩。
FaaS 平台选择
市场上有许多 FaaS 平台可供选择。
托管 FaaS 平台(Managed FaaS Providers)
- Amazon: AWS Lambda
- Google: Google Cloud Functions
- Microsoft: Azure Functions
- IBM: Cloud Functions
- Red Hat: OpenShift Cloud Functions
- 其他: Netlify, Oracle, Twilio 等。
自我管理 FaaS 平台(Self-managed FaaS Choices)
如果您不想依赖第三方托管平台,还有许多自我管理的选择:
- Fission: Kubernetes 上的无服务器功能框架。
- Fn Project: 容器原生的无服务器平台。
- Knative: 基于 Kubernetes 的平台,用于构建、部署和管理无服务器工作负载。
- OpenFaaS: 允许您将任何 Linux 或 Windows 进程转换为函数。
总结
- FaaS 是一种云计算服务,允许您在无需复杂基础设施的情况下,执行代码以响应事件。
- FaaS 是 Serverless Computing 的子集,它以多个函数的形式创建应用程序。
- FaaS 可部署在混合云和本地环境中。
- FaaS 按函数运行时间计费,而不是按服务器实例大小计费。
- 一个 Serverless 堆栈由 FaaS、BaaS 和 API 网关组成。
- 市场上有多种托管和自我管理的 FaaS 平台可供选择。