课程关键词:以产品为中心、以增长为导向、以工程为抓手、以成本为红线。
0. 课程定位(Why this course)
- 面向非科班/转行者与全栈/后端工程师的产品型软件架构课程。
- 目标:从一个最小可行产品(MVP)起步,在 12 周内完成可维护、可观测、可扩展、可变现的架构升级,支撑1→10→100用户规模跃迁。
- 方法论:Vibe Coding(以场景与节奏驱动的构建法) + Clean/Hexagonal/DDD-lite + SRE/FinOps + Data & AI Ready。
1. 学习成果(Learning Outcomes)
完成课程后,你将能:
- 以产品需求→领域建模→接口契约→迭代交付的节奏设计系统。
- 实作一套分层解耦(Adapter/UseCase/Domain/Infra)的服务,具备可测试性与可观测性。
- 在低成本前提下实现弹性扩缩容、灰度发布、降级与熔断、缓存与队列等工程能力。
- 构建增长闭环:埋点→指标→看板→A/B→自动化运营;并具备支付/订阅/风控的落地方案。
- 形成可复用模板仓库与团队协作流程(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,可自由发挥)
- AI 内容学习平台(轻量版)
- 模块:上传/解析→摘要/问答→书签/高亮→订阅与分享。
- 要求:MVP 单体 + 事件日志 + 订阅 + 埋点看板 + 基础风控。
- 支付与结算中台(SaaS 内嵌)
- 模块:订单→支付→订阅→对账→发票;Webhooks 幂等与重放。
- 要求:多租户(列级/RLS 方案),对账报表与异常告警。
- 推荐与通知系统(事件驱动)
- 模块:事件摄取→用户画像→候选生成→触达编排(邮件/站内/推送)。
- 要求:可观测性全套 + 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%)。