1. 课程导入与Serverless全景

在传统应用部署中,我们通常先申请计算实例、安装运行时、配置网络与安全组,再部署应用并持续维护操作系统补丁、扩缩容策略和空闲资源。Oracle Cloud Serverless 的核心思路是把“服务器生命周期管理”从开发者职责中剥离出来:你只交付代码、容器镜像或函数逻辑,平台负责按请求或事件触发、按需分配计算资源、自动伸缩,并在没有流量时缩容到零。这里的“无服务器”并不是没有服务器,而是服务器不再由你直接管理。

Oracle Cloud 的 Serverless 能力主要由三块组成:OCI Functions(函数即服务,FaaS)、OCI API Gateway(托管 API 入口)以及 OCI Container Instances / OKE 虚拟节点等容器化无服务器形态。它们共享一个关键特征:资源按使用量计费,空闲不产生计算费用。理解这一点,是理解后续所有架构设计取舍的起点。

核心价值可以归纳为四点:
1. 零运维——无需管理主机、补丁、扩缩容;
2. 弹性伸缩——从 0 到高并发自动响应,无需预置容量;
3. 按需计费——按调用次数、执行时长和内存规格计费;
4. 事件驱动——天然对接对象存储、消息队列、数据库变更等事件源。

那么它适合什么场景?典型适用场景包括:突发或不可预测流量的 Web API、图片/视频上传后的异步处理、定时批处理任务、事件驱动的数据管道、以及需要快速验证的微服务原型。相反,长时间稳定高负载、对冷启动极度敏感、或需要复杂本地状态的应用,则未必是 Serverless 的最佳选择。这个判断标准会贯穿整个课程。

为了把“是什么”落到“怎么做”,我们先看一个最小可运行示例。假设你要在 OCI Functions 中部署一个处理图片上传的函数,典型流程如下:

# 1. 创建应用(函数容器)
oci fn application create \
  --compartment-id <compartment_ocid> \
  --display-name demo-fn-app \
  --subnet-ids '["<subnet_ocid>"]'

# 2. 生成并部署函数
fn init --runtime python demo-fn
cd demo-fn
fn deploy --app demo-fn-app

# 3. 调用测试
fn invoke demo-fn-app demo-fn

这段命令背后发生了三件事:函数代码被打包成容器镜像并推送到 OCI Registry;平台在指定子网中创建执行环境;调用时按需拉起实例执行。你可以通过 fn invoke 观察返回结果,也可以在 OCI 控制台的函数指标中查看调用次数、执行时长和错误率。判断部署是否成功,关键看三点:函数状态为 Active、调用返回预期输出、指标中出现对应调用记录。

接下来需要建立整体学习路径。本课程共 30 章,建议按“认知—构建—集成—运维—优化”五个阶段推进:

  • 认知阶段:理解 Serverless 定义、计费模型与适用边界;
  • 构建阶段:掌握 Functions 开发、部署、配置与 API Gateway 暴露;
  • 集成阶段:对接对象存储、消息队列、数据库与事件规则;
  • 运维阶段:日志、监控、告警、权限与网络配置;
  • 优化阶段:冷启动治理、并发控制、成本分析与架构演进。

下面这张图把本节的核心对象、触发路径与学习路径放在同一张关系图中,帮助你在进入后续章节前建立全局坐标。

Oracle Cloud Serverless 全景与学习路径 触发源 HTTP 请求 对象存储事件 消息队列 / 定时器 API Gateway 路由 / 鉴权 限流 / 日志 对外统一入口 OCI Functions 按需拉起实例 自动伸缩 / 缩容到零 按调用与时长计费 后端服务 对象存储 数据库 消息队列 课程学习路径(30 章) 认知 定义 / 计费 / 边界 构建 函数 / 部署 / 网关 集成 存储 / 消息 / 事件 运维 日志 / 监控 / 权限 优化 冷启动 / 成本 核心判断:流量是否突发、是否可事件驱动、能否接受冷启动、是否按使用量计费更划算 后续章节将沿“触发 → 网关 → 函数 → 后端服务”这条主线逐层展开