Coursera 笔记

Module 03 · Serverless Overview

Introduction to Serverless Computing无服务器计算简介

Coursera ↗

Serverless 的定义与概念

无服务器计算(Serverless Computing)是云原生计算基金会(CNCF)定义的一种概念。

定义

"构建和运行不需要服务器管理的应用程序的概念。"

📌 本质: 它描述了一种更细粒度的部署模型,其中应用程序被捆绑为一个或多个函数,上传到平台,然后根据即时需求进行执行、伸缩和计费。

核心理念

Serverless Computing 将基础设施管理的责任转嫁给云提供商,使开发人员能够专注于应用程序的业务逻辑。

Serverless Computing 可以视为以下两者的结合 :

  1. 功能即服务(FaaS, Function-as-a-Service)平台: 用于运行函数。
  2. 后端即服务(BaaS, Backend-as-a-Service)服务: 代表后端云服务,例如云数据库、对象存储服务和消息队列。


IT 计算模型的演变

IT 计算的历史展示了一个从传统计算到 Serverless Computing 的渐进趋势,带来了更快的部署、更短的生命周期和更高的生产力。

演进阶段 基础设施类型 部署时间 生命周期 特点
传统计算 物理机 数周或数月 数年 受到前期投资和容量规划的限制。
虚拟化/云计算 虚拟机(VMs) 数分钟 数天或数周 实现更快的置备、高伸缩性和可用性。
容器 容器(基于 OS 虚拟化) 数秒 数分钟或数小时 基于操作系统虚拟化。
无服务器函数 Serverless 架构/核心代码 毫秒 数秒 开发者只需关注核心代码。

Serverless 作为架构风格

  • 它是标准云计算的进步,抽象化了基础设施和软件环境。
  • 代码运行:代码使用云平台运行。
  • 云提供商的责任:云提供商管理硬件和软件设置、安全性、伸缩性等。
  • 计费模式:客户端仅按使用量计费,而非 CPU 空闲时间。
  • 开发者焦点:开发人员只需以函数的形式关注其应用程序代码。

Serverless Computing 的关键特征

Serverless Computing 具有以下特点:

  • 无主机(Hostless):开发人员无需采购、管理和维护服务器。
  • 弹性(Elastic):自动伸缩(Autoscaling)是即时且固有的。
  • 自动负载均衡:自动将传入流量分配到多个后端系统。
  • 无状态(Stateless):带来更快的性能和更高的可伸缩性。
  • 事件驱动(Event Driven):函数仅在事件发生时才会被触发。
  • 高可用性(High Availability):无需额外努力或成本即可提供高可用性。
  • 按使用量计费:基于使用的细粒度计费(granular billing)。

函数的工作原理

  1. 创建函数:开发人员使用云提供商支持的语言(如 Python, Java, Node.js 等)编写代码,创建函数。
  2. 上传函数:开发人员将函数上传到云端。
  3. 定义事件:定义触发函数的事件(例如:用户点击)。
  4. 执行:事件发生时,触发器被调用,云提供商运行该函数(表现为容器对象)。

开发者收益

开发者可以花更多时间创建高质量和优化的应用程序,从而:

  • 使用任何流行的编程语言构建函数。
  • 通过添加附加功能来扩展应用功能。
  • 由于函数一次只执行一项任务,因此可以进行更好的测试。
  • 优化应用和函数,并改善用户体验。

云提供商的运维责任

为了实现零运营考虑的目标,云提供商负责日常基础设施管理和维护任务,例如:

  • 最大化计算、内存和网络利用率,同时最小化成本。
  • 提供服务器管理(包括 OS 更新和安全补丁)。
  • 启用自动伸缩。
  • 维护高可用性。
  • 实施安全性。
  • 配置高性能/低延迟。
  • 设置监控和日志记录。

云服务模型责任对比

此图比较了不同云服务模型下的责任划分,特别是 Serverless 模型 。

服务模型 用户负责的层级 云提供商负责的层级 开发者焦点
传统(On-Premise) 整个堆栈 无 应用程序、数据到硬件
IaaS 从 OS 到顶层(Runtime, Middleware, Data, Application) 硬件、存储、网络、虚拟化 操作系统和应用
PaaS 应用和数据 OS, Runtime, Middleware, 下层基础设施 应用和数据
Serverless 仅应用 除应用外所有层 仅应用代码(函数)
SaaS 无(整个堆栈由云提供商管理) 整个堆栈 消费服务

总结

  • Serverless 是构建和运行不需要服务器管理的应用程序的概念。
  • Serverless Computing 使用 BaaS 服务和 FaaS 平台。
  • IT 计算历史显示从传统计算到 Serverless Computing 的生产力趋势不断提高。
  • 在 Serverless Computing 中,云提供商负责基础设施管理(如服务器管理、OS 更新、安全补丁和监控)。
  • Serverless Computing 使开发人员能够专注于应用程序和代码。
  • 用户仅按使用量计费,而不是按 CPU 空闲时间计费。