● 技术债盘点 · Tech Debt Audit
Django 单体应用
5 年 · ~150k LOC · React 前端 · 20 人工程团队
审计日期 2026-05-15 · Martin Fowler Tech Debt Quadrant 框架
01 技术债 4 类分布
Deliberate Reckless · 明知偷懒25%
Deliberate Prudent · 明知但合理20%
Inadvertent Prudent · 后见之明30%
Inadvertent Reckless · 无心之债25%
推荐还债节奏:Boy Scout 规则(每个改动顺手清理)占 20% 工程时间 + 每个 sprint 固定 5% 还债容量 + 每季度 1 次专项重构 sprint(2 周)。先杀 Quick Win(ROI > 10x),再拆战略债,低 ROI 债接受不还。
02 5 维审计明细
| 维度 |
现状 |
核心问题 |
利息 / 月 |
本金 |
ROI |
🧪 代码质量 |
差 覆盖 35% · 重复 ~18% · 圈复杂度高 |
回归 bug 频发;重构无安全网;CR 耗时但不可靠;新人害怕改动 |
3-5 d bug 修复 2-3 d 回归验证 |
40-60 d 补测试 + DRY |
~3× |
🏗️ 架构 |
中差 单体 · 模块边界模糊 · 无 bounded context |
一处改动影响多处;必须全量发布;团队并行开发互相踩脚 |
4-6 d merge 冲突 + 意外回归 |
100-150 d 渐进拆分 + 边界 |
~2× |
📦 依赖 |
差 过期 32 个 · 待确认 CVE 若干 |
安全攻击面扩大;新功能受限于旧 API;升级路径阻塞 |
安全风险(不可量化) 1-2 d 绕路成本 |
15-25 d 分批升级 + CVE |
~6× |
📄 文档 |
差 架构图缺失 · API doc 不完整 · 无 runbook |
新人 ramp-up 8 周+;跨团队靠口口相传;离职即丢知识 |
3-4 d 沟通试错 重复答疑 |
10-15 d 架构图+API+runbook |
~4× |
⚙️ DevOps |
中差 发布 2h+ · CI 串行 · 监控碎片化 |
发布窗口固定→功能堆积→大爆炸发布→更慢;故障发现靠用户报 |
2-3 d 发布等待 1-2 d 故障排查延迟 |
12-20 d CI加速+灰度+告警 |
~5× |
03 优先级分类
⚡ Quick Win
ROI > 10× · 1 周内可交付
DevOps CI 并行化 + 缓存 → 发布 120min→30min
依赖 32 个过期依赖分 3 批升级,先修已知 CVE
DevOps P0 告警:DB 慢查询 / API 5xx / 队列积压
文档 1 页架构现状图 + 核心 API list(1 天速写)
🎯 Strategic
高 ROI · 季度计划推进
工程 测试覆盖率 35% → 70%,优先核心业务路径
架构 定义模块边界(DDD bounded context),画目标架构
架构 渐进拆分:先从无状态服务入手(通知 / 报表)
DevOps 灰度发布 + feature flag + 自动回滚
文档 API 文档自动化(DRF spectacular)+ runbook
📦 Defer
低 ROI · 接受不还
工程 老旧 jQuery 组件→React(不影响核心功能)
架构 「完美」DDD 重构 —— 等拆分完成后再说
工程 非关键路径追求 100% 覆盖率
依赖 非安全小版本追逐 → 交给 Renovate bot
04 30 / 60 / 90 天还债计划
30天 · 止血
覆盖率 35% → 45%
发布 120min → < 45min
CVE 清零
CI 流水线拆分并行 + 缓存5d
过期依赖批量升级(分 3 批)8d
核心业务路径 P0 测试补全10d
P0 监控告警上线3d
架构现状图 + API list1d
投入 ~27d / 交 2 人 sprint
60天 · 加固
覆盖率 45% → 55%
模块边界定义完成
灰度发布就绪
集成测试为主,推覆盖率至 55%15d
DDD bounded context + 目标架构5d
通知 / 报表服务独立部署12d
灰度发布 + feature flag 基建10d
API 文档自动生成3d
投入 ~45d / 持续推进
90天 · 提质
覆盖率 55% → 70%
发布 < 20min
新人 ramp-up 4 周
E2E 关键流程测试,覆盖率→70%12d
重复代码消除(DRY 重构)8d
用户 / 订单模块拆分15d
Runbook + 故障处理 SOP5d
自动化回滚机制5d
投入 ~45d / 累计 117d
ROI 总览:总还债投入 ~117 工程师天(约占 3 个月团队容量的 18-20%),预计每年节省 200-300 工程师天,首年 ROI ~2.5×,次年复利更高。单笔最大回报:CI/CD 优化(5×)、依赖安全更新(6×)。