Vibe Coding 软件架构课大纲(从0→1 MVP到10→100可规模化)

课程关键词:以产品为中心、以增长为导向、以工程为抓手、以成本为红线


0. 课程定位(Why this course)

  • 面向非科班/转行者与全栈/后端工程师的产品型软件架构课程。
  • 目标:从一个最小可行产品(MVP)起步,在 12 周内完成可维护、可观测、可扩展、可变现的架构升级,支撑1→10→100用户规模跃迁。
  • 方法论:Vibe Coding(以场景与节奏驱动的构建法) + Clean/Hexagonal/DDD-lite + SRE/FinOps + Data & AI Ready

1. 学习成果(Learning Outcomes)

完成课程后,你将能:

  1. 产品需求→领域建模→接口契约→迭代交付的节奏设计系统。
  2. 实作一套分层解耦(Adapter/UseCase/Domain/Infra)的服务,具备可测试性可观测性
  3. 低成本前提下实现弹性扩缩容灰度发布降级与熔断缓存与队列等工程能力。
  4. 构建增长闭环:埋点→指标→看板→A/B→自动化运营;并具备支付/订阅/风控的落地方案。
  5. 形成可复用模板仓库团队协作流程(Git/CI/CD/Code Review/Runbook)

2. 适用人群 & 先修要求

  • 两条学习路径
  • 路径A(产品驱动):零/低代码背景的产品/运营/创作者。
  • 路径B(工程驱动):有 JS/TS/Go/Python 任一语言基础的工程师。
  • 建议先修:Git 基础、HTTP/REST 基础、数据库 CRUD 常识、Linux/容器基本操作。

3. 课程地图(四阶段能力栈)

Phase I:0→1(MVP)

  • 单体/模块化单体、REST 契约、ORM、认证鉴权、对象存储、邮件/短信。

Phase II:1→10(可维护)

  • Clean/Hexagonal、测试金字塔、可观测性(日志/指标/追踪)、CI/CD、蓝绿/灰度发布、缓存与队列。

Phase III:10→100(可扩展)

  • 读写分离、拆分边界(按变化轴拆)、事件驱动、幂等与一致性、限流与熔断、搜索与推荐、支付与订阅、风控。

Phase IV:合规与SRE

  • 安全与隐私、审计与合规、备份与容灾、成本优化(FinOps)、性能压测与容量规划。

4. 技术选型与模板(可替换)

  • 前端:Next.js(App Router)+ React + Tailwind + TanStack Query + Zustand。
  • 后端(任选其一)
  • Node/TS:NestJS(分层 + DI),或 Fastify + 自建UseCase层。
  • Go:Fiber/Gin + Wire(DI)+ ent/GORM + fx(可选)。
  • Python:FastAPI + Pydantic + SQLModel。
  • 数据库:PostgreSQL(主→只读副本),Redis(缓存/会话/限流),对象存储(S3/R2)。
  • 消息与任务:Kafka/Redpanda(事件流,可选),或 RabbitMQ/CloudTasks(简化)。
  • 接口:HTTP/REST + OpenAPI;内部可选 gRPC(接口收敛)。
  • 可观测性:OpenTelemetry(Trace/Metric/Log)+ Grafana/Loki/Tempo + Prometheus。
  • CI/CD:GitHub Actions + Docker + Fly.io/Render/Vercel/Cloudflare(低运维起步)。
  • 鉴权:JWT + RLS(Postgres Row-Level Security 可选)+ RBAC/ABAC。
  • 支付:Stripe + Webhook 签名 + 幂等键;订阅/试用/优惠码/税务(基础版)。

提供脚手架模板仓库结构:见附录A。


5. 12 周详细大纲(每周 2 讲 + 1 实战)

Week 1|产品到架构

  • L1 产品分解:核心用户旅程(Jobs to be Done)→ MVP Scope → 领域术语表。
  • L2 架构风格速写:分层/六边形/整洁架构/DDD-lite 的适用边界。
  • Lab:从用户故事生成 OpenAPI 契约与 ERD 初稿。

Week 2|模块化单体 & Clean

  • L3 UseCase/Domain/Adapter 划分与依赖倒置;防腐层实践。
  • L4 数据访问策略:迁移、种子数据、软删除、多租户(Schema/Column/RLS)。
  • Lab:搭建模板仓库,打通注册/登录/资料编辑全链路。

Week 3|可测试性

  • L5 测试金字塔:单测/契约测/端到端;Test Double 与可测性设计。
  • L6 假数据/工厂与快照;回归与变更检测。
  • Lab:为核心 UseCase 写 10+ 用例,集成 CI。

Week 4|可观测性与质量门

  • L7 OTel 全链路追踪、指标基线、SLO/SLA/SLI 设计。
  • L8 错误预算与发布策略:蓝绿、金丝雀、特性开关。
  • Lab:接入 APM/日志/Tracing,看板上墙。

Week 5|性能与缓存

  • L9 缓存层级:浏览器/边缘/CDN/服务/数据库;TTL/惰性失效/缓存击穿防护。
  • L10 限流/降级/熔断/重试与幂等键;接口稳定性设计。
  • Lab:为 3 条热点 API 设计缓存策略并压测。

Week 6|事件驱动与任务

  • L11 事件建模:事实表/事件表、出站/入站箱(Outbox/Inbox)。
  • L12 任务编排:异步队列、定时任务、补偿与回滚策略(Saga-lite)。
  • Lab:实现邮件通知与审计日志流水线。

Week 7|数据与推荐准备

  • L13 埋点体系:实体→事件→属性→指标(DAU/留存/漏斗/北极星)。
  • L14 向量检索/搜索/推荐的最低落地线;冷启动与反馈回路。
  • Lab:埋点→ETL→看板(Grafana/Metabase)闭环。

Week 8|增长与变现

  • L15 支付/订阅/试用/券;税务与对账;Webhook 幂等与重放。
  • L16 营销增长:分享链路、邀请返佣(基础版)、邮件旅程与反作弊。
  • Lab:上线订阅 + 退款/降级/续费全流程沙箱。

Week 9|边界拆分与一致性

  • L17 拆分边界:按变化轴与团队自治拆;数据一致性模型选择。
  • L18 最小化跨边界耦合:API 合同、Schema 版本化、兼容退场。
  • Lab:将“通知/计费”拆为独立服务并接入网关。

Week 10|安全与隐私

  • L19 安全基线:OWASP Top10、密钥治理、RBAC/ABAC、审计与合规要点。
  • L20 隐私分级与数据脱敏;导入导出与删除权;权限申请流程。
  • Lab:落地密钥轮换、审计日志、敏感数据扫描。

Week 11|SRE 与韧性

  • L21 备份/容灾/多可用区;错误预算驱动的运维决策。
  • L22 容量规划与成本优化(FinOps):性能分析、按量计费与包年包月权衡。
  • Lab:演练故障注入与灾备切换 Runbook。

Week 12|综合项目与答辩

  • L23 架构复盘:四象限(价值/风险/成本/复杂度)优先级矩阵。
  • L24 演示与路演:关键指标与技术亮点;Q&A 防守清单。
  • Capstone:见下。

6. Capstone(3 选 1,可自由发挥)

  1. AI 内容学习平台(轻量版)
  • 模块:上传/解析→摘要/问答→书签/高亮→订阅与分享。
  • 要求:MVP 单体 + 事件日志 + 订阅 + 埋点看板 + 基础风控。
  1. 支付与结算中台(SaaS 内嵌)
  • 模块:订单→支付→订阅→对账→发票;Webhooks 幂等与重放。
  • 要求:多租户(列级/RLS 方案),对账报表与异常告警。
  1. 推荐与通知系统(事件驱动)
  • 模块:事件摄取→用户画像→候选生成→触达编排(邮件/站内/推送)。
  • 要求:可观测性全套 + A/B 框架 + 限流/退订/合规。

评分:功能 40%|工程质量 30%|可观测性 15%|成本与韧性 15%。


7. 里程碑与验收清单(Milestone Checklist)

  • M1(第 2 周):登录注册上线,契约与ERD定版,CI 绿灯。
  • M2(第 4 周):OTel/日志/指标/追踪齐备;蓝绿发布打通。
  • M3(第 6 周):事件流与任务编排跑通;Outbox 守护。
  • M4(第 8 周):支付订阅 + 邀请链路 + 退款流程。
  • M5(第 10 周):安全基线通过(依赖扫描/密钥轮换/审计)。
  • M6(第 12 周):容量/成本评估报告 + Chaos 演练报告 + Capstone 路演。

8. 团队协作与仓库规范

  • Mono-Repo 推荐结构(可拆多仓):
  • /apps/web(Next.js)
  • /apps/api(NestJS/FastAPI/Gin)
  • /packages/core(领域模型与UseCase)
  • /packages/sdk(OpenAPI 生成客户端)
  • /infra(IaC/Docker/compose/k8s/Helm)
  • /docs(架构决策记录 ADR + Runbook + Onboarding)
  • 流程:GitHub Flow + Protect Main + PR Template + Conventional Commits + Changeset 版本管理。
  • 文档:ADR 模板、Runbook 模板、Oncall 手册。

9. 关键设计清单(Design Checklists)

  • 接口契约:版本化、幂等键、错误码规范、速率限制头、分页/排序/过滤统一。
  • 数据层:迁移回滚脚本、软删除与审计、RLS/多租户策略、读写分离与连接池。
  • 缓存策略:键命名、TTL 策略、主动失效、热点保护、旁路缓存与写穿/写回。
  • 一致性:本地事务 + Outbox/Inbox、幂等消费、去重与去抖。
  • 可观测性:Trace 采样率、指标基线、错误预算、告警分级(P0/P1/P2)。
  • 发布韵律:特性开关、灰度比例、回滚阈值、演练频率。
  • 安全与合规:密钥治理、最小权限、数据分级、隐私请求处理 SLA。

10. 作业与考核方式

  • 周作业:课后完成 1 个设计清单 + 1 个可观测性任务(例如新增 3 个关键指标)。
  • 代码评分 Rubric
  • 结构(分层、依赖方向、边界清晰)
  • 契约(OpenAPI 完整度、错误码、分页/过滤)
  • 测试(覆盖率、可读性、独立性)
  • 运维(CI/CD、打包、配置分离、环境差异处理)
  • 观测(日志、指标、追踪与告警合理性)
  • 成本(实例规格、缓存命中率、外部服务调用优化)

11. 课程资料包(交付物)

  • 架构模板仓库(Node/Go/Python 三选一)。
  • PR 模板、Issue 模板、ADR 模板、Runbook 模板、事故复盘模板。
  • OpenAPI 契约示例 + SDK 生成脚本(TS/Go/Python)。
  • 监控看板 JSON(Grafana)与告警规则示例(Prometheus Alertmanager)。
  • 压测脚本(k6)与容灾演练清单。

12. 推荐资料(精简可操作)

  • 《Clean Architecture》《Domain Modeling Made Functional》《Designing Data-Intensive Applications》
  • 《Building Microservices(2nd)》、Google SRE Workbook、《可观察性工程》
  • 官方文档:OpenAPI、OpenTelemetry、PostgreSQL、Redis、Stripe、Next.js、NestJS/FastAPI/Gin

附录A:模板仓库目录(示例)

repo/
├─ apps/
│  ├─ web/                  # Next.js(App Router)
│  └─ api/                  # NestJS/FastAPI/Gin
├─ packages/
│  ├─ core/                 # 领域模型与用例
│  └─ sdk/                  # OpenAPI 生成客户端
├─ infra/
│  ├─ docker/               # Dockerfile & compose
│  ├─ k8s/                  # Helm charts(可选)
│  └─ scripts/              # k6 压测/运维脚本
├─ docs/
│  ├─ adr/                  # 架构决策记录
│  ├─ runbook/              # 值班与故障处理
│  └─ onboarding/           # 新人文档
└─ .github/
   ├─ workflows/            # CI/CD
   ├─ ISSUE_TEMPLATE.md
   └─ PULL_REQUEST_TEMPLATE.md

附录B:OpenAPI 片段(示例)

openapi: 3.1.0
info:
  title: Vibe API
  version: 0.1.0
paths:
  /v1/auth/login:
    post:
      operationId: login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginReq'
      responses:
        '200': { $ref: '#/components/responses/Ok' }
        '401': { $ref: '#/components/responses/Unauthorized' }
components:
  schemas:
    LoginReq:
      type: object
      required: [email, password]
      properties:
        email: { type: string, format: email }
        password: { type: string, minLength: 8 }
  responses:
    Ok:
      description: OK
    Unauthorized:
      description: Unauthorized

附录C:作业示例(Week5 缓存策略)

  • /v1/content/{id} 设计旁路缓存:Key 架构、TTL、主动失效钩子;压测前后命中率对比。
  • 为“搜索”设计请求合并慢查询观察;提供指标与结论。

附录D:演示与路演脚本(要点)

  • 3 张图讲清楚:上下文图容器图时序图
  • 指标看板:北极星指标 + 稳定性指标(错误率、P95、可用性)。
  • 工程亮点:Outbox 幂等、灰度回滚、成本降本(缓存命中率从 60%→85%)。

发表回复