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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
无服务器入门/课时/数据库迁移
RawBlame
课时目录12 节

无服务器入门

  1. 01无服务器是什么
  2. 02十二要素应用
  3. 03FaaS 执行模型
  4. 04AWS Lambda 入门
  5. 05事件驱动架构
  6. 06API Gateway
  7. 07冷启动与性能
  8. 08无状态与外部存储
  9. 09数据库迁移
  10. 10本地开发与部署
  11. 11成本与限制
  12. 12综合练习

数据库迁移

migrations 节点;Flyway/Liquibase 概念。

30 分钟

数据库迁移

Serverless 函数 不应在每次冷启动时 CREATE TABLE。Schema 变更应像传统后端一样 版本化、可重复、可审计——Flyway / Liquibase 跑在 CI、一次性 Lambda 或独立 Job,与 orm-migrations 同一套纪律。

学习目标

  • 理解迁移脚本与运行时 Handler 的职责分离
  • 对比「CI 跑 Flyway」与「迁移专用 Lambda」
  • 掌握多环境(dev/staging/prod)推广顺序

为什么迁移不能绑在 Handler 里

做法问题
Handler 启动时自动 migrate并发 invocation 竞态;冷启动变慢
手工改 prod 表无版本记录,回滚困难
脚本进 Git + 流水线执行✅ 与 ORM track 一致
-- V2__add_order_status.sql(Flyway 命名)
ALTER TABLE orders ADD COLUMN status VARCHAR(32) NOT NULL DEFAULT 'PENDING';

orm-migrations 讲的 Flyway/Liquibase 语义不变;变的是 执行环境 从「SSH 到 EC2」变成 GitHub Actions 或 CodeBuild。

Serverless 环境的执行方式

  1. CI/CD 门禁(推荐):合并 main 前,pipeline 对 staging RDS 跑 flyway migrate,测完再 prod
  2. 迁移 Lambda:VPC 内、限 IAM、仅 CI 角色可 invoke;适合无长期 runner 的团队
  3. RDS 控制台手工:仅实验,禁止 prod 常态

DynamoDB 无 SQL 迁移:用 CloudFormation/SAM 定义表;索引变更走 GSI 在线添加,见 ddb-gsi。

与部署顺序

1. flyway migrate(schema 向前兼容)
2. 部署新 Lambda(读新列、写新列)
3. 清理旧列(另一次迁移,可选)

向前兼容:先加列 nullable,再发代码,再删旧逻辑——避免「新代码 + 旧表」线上爆炸。

练习

  • 写一条 Flyway 版本命名规范与 rollback 策略(Liquibase 亦可)
  • 画 pipeline:PR → test → migrate staging → deploy Lambda
  • 说明 DynamoDB 加 GSI 与 MySQL 加索引在「零停机」上的差异

小结

迁移是发布流程的一等公民,不是函数里的隐藏副作用。 下一课看 SAM / Serverless Framework 如何在本地模拟云端。

加载本节练习…
← 上一课无状态与外部存储下一课 →本地开发与部署