模式 D · 稳态运维项目接入
适用判定:项目已运行 1 年+,不再做大迭代,只维护和小优化。聚焦运维,不求完整。
为什么你属于这个模式
符合以下任一项:
- ✅ 产品已稳定运行,用户基本固定
- ✅ 不再有"版本发布"节奏,只是 Bug Fix + 小优化
- ✅ 研发资源已转移到新产品
- ✅ 只有 1-2 人维护
- ✅ 只关心"不出事 + 出事了能救"
核心策略:只要运维篇 + 最小开发规范
这个模式不强求:
- ❌ 完整的 PRD(项目已无大需求)
- ❌ 详细的用户故事
- ❌ 可测性评审流程
- ❌ 复杂的分支策略
- ❌ 测试策略和覆盖度度量
这个模式只要求:
- ✅ Runbook(最重要,出事能救)
- ✅ 故障响应流程(谁上、怎么升级、怎么复盘)
- ✅ 复盘机制(每次故障都要 5 Why)
- ✅ 基础 commit 规范(纯粹为了可追溯)
- ✅ Bug 报告模板(内部流转用)
上车清单(4 步)
Step 1 · 初始化精简目录(15 分钟)
cd your-project
epcode init --mode=maintenance
# 或手动(只建运维相关):
mkdir -p ops/{runbooks,incidents,postmortems,releases}
不需要建 docs/prd/、tests/cases/ 等(用不到)。
Step 2 · 写最关键的 Runbook(0.5-1 天)
列出本项目最高频的 5-10 个线上告警,每个写 1 份 Runbook:
# Runbook: <告警名>
## 现象
[告警内容 + 用户表现]
## 快速定位(5 分钟内)
1. [查什么命令/日志]
## 处置方案
方案 A: 重启(最快)
方案 B: 扩容
方案 C: 回滚
## 常见根因 Top 3
...
用 Runbook 模板。
优先级排序(先写哪个):
- 数据库相关(最高影响)
- 核心业务接口 5xx
- 登录/认证
- 定时任务
- 第三方依赖
Step 3 · 定义故障响应 SOP(1 小时)
把这些贴在内部 Wiki / 钉钉群公告:
# 【XX 项目】故障响应 SOP
## 告警收到后
1. 5 分钟内确认(值班人)
2. 级别判定:
- P0: 核心业务不可用 → 立即处理 + 通知全员
- P1: 部分用户受影响 → 15 分钟响应
- P2: 非核心异常 → 工作时间处理
3. 找对应 Runbook 执行
4. 找不到 Runbook 或 10 分钟没恢复 → 升级到 @张三 / @李四
## 事后必做
1. 24 小时内补故障报告(用模板)
2. 48 小时内复盘(用 5 Why)
3. 更新 Runbook 补上学到的
Step 4 · 建立最简提交规范(30 分钟)
告诉团队:
Commit 格式(只要求 type):
fix: 修复登录失败
fix(auth): 修复登录重复请求
chore: 升级依赖
hotfix: 紧急修复数据库慢查询
PR 规则:
- 主干分支保护(只能通过 PR)
- 至少 1 人 approve
- 关键改动(DB/配置/安全)必须 2 人 approve
Bug 用模板(bug-report-template.md):
- 内部跟踪用,不必 100% 填所有字段
最小可用集
如果连上面的 4 步都嫌多,这 2 件事绝对必做:
| # | 必做 | 代价 |
|---|---|---|
| 1 | 至少 3 份核心 Runbook | 0.5 天 |
| 2 | 故障复盘用模板写 | 每次故障多 30 分钟 |
这两件做到,就比"啥都没有"强 10 倍。
运维日常工作流
日常(无事)
- 监控大盘观察
- 告警按 Runbook 处理
- 小 Bug 按模板记录
有故障时
收告警 → 按 Runbook 定位 → 处置 → 恢复 → 发故障报告 → 48h 内复盘
所有模板见 templates/operations/。
周度
- 看上周告警统计
- 评估是否需要补 Runbook
- 复盘中的改进项跟进
月度
- 看月度故障分类
- MTTR / 故障率趋势
- 是否有系统性问题要向上反馈
运维度量(轻量)
只盯 3 个指标:
| 指标 | 定义 | 目标 |
|---|---|---|
| MTTR | 故障平均恢复时间 | < 30 min |
| 故障数/月 | 总数 | 月对月持平或下降 |
| 重复故障率 | 同类问题再次发生的占比 | < 10% |
不要追求:
- 代码覆盖率
- PR 评审时长
- 需求变更率
这些是迭代阶段的指标,稳态不适用。
不适合稳态的规范(明确忽略)
告诉团队明确可以跳过的:
| 规范 | 为什么跳过 |
|---|---|
| 完整 PRD | 没新需求 |
| 可测性评审 | 没新需求要评审 |
| 故事地图 | 不做新功能 |
| 测试策略 | 测试的都是 bug fix 的小范围 |
| 多层审批 | 团队小,直接做 |
| 完整 ADR | 架构已定,只记录关键变更 |
| Sprint 规划 | 不做 Sprint |
| Release Note | 可选,小改动不发 |
稳态项目的"最怕什么"
怕 1: 值班人员流动后知识丢失
对策:
- Runbook 必须详细到新人也能照着做
- 不要写"张三知道怎么处理" → 写具体步骤
怕 2: 没人维护,代码腐烂
对策:
- 至少保持 Conventional Commits 便于追溯
- 每季度跑一次依赖升级(Dependabot)
- 定期(季度)安全扫描
怕 3: 突然要做大改动
对策:
- 触发条件:如加新功能 > 5 人天
- 升级到 模式 C 运行一个版本
怕 4: 文档没人看
对策:
- Runbook 写在遇到问题会直接翻的地方(内部 Wiki / 仓库 README)
- 文件命名用"告警名",便于搜索
稳态的"最小健康度"
每季度自检:
- 最高频告警都有 Runbook
- 最近 3 个月的故障都有复盘
- 值班 SOP 有文档且近期更新过
- 依赖有定期升级(无高危 CVE)
- 有人能接班(知识不依赖单人)
从稳态退出
稳态不是终点。什么时候脱离模式 D:
相关资源
- 接入模式总览
- 模式 C · 迭代 - 上一阶段
- 运维篇全套文档
- 运维模板库
- 运维 AI Prompt