CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DevOps 配置与平台/课时/云函数
RawBlame
课时目录12 节

DevOps 配置与平台

  1. 01配置管理概览
  2. 02Chef 与 Salt
  3. 03Puppet
  4. 04OpenShift
  5. 05Azure 平台
  6. 06云原生工具
  7. 07操作系统发行版
  8. 08平台搭建方法论
  9. 09代理与负载均衡
  10. 10云函数
  11. 11数据与平台设计
  12. 12综合练习

云函数

azure-functions、gcp-functions。

30 分钟

云函数

Serverless Functions(FaaS) 把 运行时、伸缩、补丁 交给云平台,开发者只上传 函数代码 + 触发器配置。本课聚焦 Azure Functions 与 GCP Cloud Functions(第 2 代),衔接 dcp-azure 与 devops-cloud-essentials,补全 /roadmaps/devops 的 serverless / event-driven 分支。与长期运行的 Spring Boot(CodeRoadMap backend)形成 「核心 API 常驻 + 边缘任务函数化」 的组合架构。

学习目标

  • 理解 FaaS 冷启动、并发限制、执行时长、计费模型
  • 会用 HTTP 触发器、队列触发器、定时触发器 实现 CodeRoadMap 周边任务(邮件、Webhook、批处理)
  • 对比 Azure Functions 与 GCP Cloud Functions 在运行时、VPC 接入、密钥集成上的差异

适用场景矩阵

场景适合 FaaS更适合容器/VM
Webhook 接收、轻量转换✅
定时清理、报表生成✅
高 QPS 核心 REST API需优化✅ Spring Boot / Go
长连接 WebSocket❌✅
大内存批处理 (>8GB)受限✅ Batch / K8s Job
CodeRoadMap 核心:App Service / K8s Deployment(backend + platform)
周边函数:
  - 用户注册发送验证邮件(Queue 触发)
  - GitHub Webhook 同步课程 draft(HTTP 触发)
  - 每日学习统计聚合(Cron 触发)

Azure Functions 示例

// HttpTrigger — GitHub Webhook 验签后写入 Queue
const crypto = require('crypto');

module.exports = async function (context, req) {
  const sig = req.headers['x-hub-signature-256'];
  const secret = process.env.GITHUB_WEBHOOK_SECRET;
  const hmac = crypto.createHmac('sha256', secret);
  hmac.update(JSON.stringify(req.body));
  const expected = 'sha256=' + hmac.digest('hex');

  if (sig !== expected) {
    context.res = { status: 401, body: 'Invalid signature' };
    return;
  }

  context.bindings.outputQueueItem = JSON.stringify({
    repo: req.body.repository.full_name,
    commits: req.body.commits?.length ?? 0,
  });
  context.res = { status: 202, body: 'Accepted' };
};
// function.json / host.json 概念配置
{
  "bindings": [
    {
      "type": "httpTrigger",
      "direction": "in",
      "authLevel": "function",
      "methods": ["post"],
      "route": "github/webhook"
    },
    {
      "type": "queue",
      "direction": "out",
      "queueName": "content-sync",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

GCP Cloud Functions(Gen2)示例

# main.py — Cloud Storage _finalize 触发缩略图(概念)
import functions_framework

@functions_framework.cloud_event
def on_upload(cloud_event):
    data = cloud_event.data
    bucket = data["bucket"]
    name = data["name"]
    # 调用 Cloud Run 或写入 Pub/Sub,由 backend 消费
    print(f"New object: gs://{bucket}/{name}")
# deploy 片段 — gcloud functions deploy
# gcloud functions deploy content-webhook \
#   --gen2 --runtime=python312 --region=asia-east1 \
#   --trigger-http --allow-unauthenticated=false \
#   --set-secrets=GITHUB_WEBHOOK_SECRET=projects/xxx/secrets/gh-secret:latest

VPC 接入:函数访问私有 MySQL 需 VPC Connector(GCP)或 VNet Integration(Azure);核心 DB 仍建议 API 层隔离,函数通过 backend 内部 API 间接访问。

平台集成要点

  • 密钥:Azure Key Vault reference / GCP Secret Manager(见 dcp-cloud-tools)
  • 观测:Application Insights / Cloud Logging + Trace 与主站关联 traceId
  • IaC:terraform-essentials 管理 Function App、IAM、Storage Queue

练习

  • 为 CodeRoadMap 列出 3 个适合 FaaS 的任务与 2 个不适合的任务,并说明原因
  • 设计 GitHub → Function → Queue → backend 的内容同步链路时序图
  • 对比 Azure Functions Consumption Plan 与 GCP Cloud Functions 按调用+GB-秒计费的估算方法

小结

云函数适合事件驱动、间歇性、无状态任务;与 CodeRoadMap 常驻 API 互补。 下一课从 数据与平台设计 角度,讨论托管 DB、缓存与迁移策略。

加载本节练习…
← 上一课代理与负载均衡下一课 →数据与平台设计