治理与方法论
TOGAF、Scrum、ITIL。
治理与方法论
这一课你将能做到
- 说清楚 TOGAF 的 ADM 循环在中小团队如何裁剪落地
- 为本站设计一套轻量架构治理机制:评审清单 + ADR 流程 + 技术债台账
- 解释 Scrum、Kanban、SAFe 各自的适用团队规模,并为本站 15 人团队做选择
为什么要学
架构不是设计出来就完事的——代码会腐化、团队会扩张、边界会模糊。没有治理机制,再漂亮的架构图一年后都会变成「文档里的架构」和「实际跑的架构」两张皮。
人话:治理就是给架构装「物业」。房子是设计建出来的,但没有物业管:乱搭乱建(随意加依赖)、管道老化(技术债)、违章改造(绕过架构规范),三年后小区没法住人。
先建立图像
架构治理的三层体系:
┌─────────────────────────────────────────┐
│ 战略层:技术雷达 / 架构原则 │
│ 「我们不用闭源中间件」「数据不出私有云」 │
├─────────────────────────────────────────┤
│ 机制层:评审 + ADR + 技术债台账 │
│ 新服务准入 checklist / 重大决策留痕 │
├─────────────────────────────────────────┤
│ 工具层:架构适应度函数(Fitness Function) │
│ ArchUnit 校验分层 / 依赖扫描 / 契约测试 │
└─────────────────────────────────────────┘
跟着做
步骤 1:TOGAF ADM 的中小团队裁剪
完整 ADM 有 8 个阶段,本站裁剪为四步循环:
原版 ADM: A架构愿景→B业务架构→C信息系统架构→D技术架构
→E机会方案→F迁移规划→G实施治理→H变更管理
本站裁剪版(每季度一轮):
1. 愿景对齐(半天):本季度业务目标 → 架构要支撑什么
2. 现状盘点(1 天):架构图更新 + 技术债台账复审
3. 差距与方案(2 天):列出差距 → 排序 → 排进迭代
4. 实施守护(持续):PR 里 ArchUnit 自动校验 + 月度评审
步骤 2:用 ArchUnit 把架构规范变成代码
治理不能只靠自觉,要让规范在 CI 里自动执行:
@AnalyzeClasses(packages = "com.coderoadmap")
class ArchitectureTest {
// 分层规则:Controller 不许直接访问 DAO
@ArchTest
static final ArchRule layered = layeredArchitecture()
.consideringAllDependencies()
.layer("Controller").definedBy("..controller..")
.layer("Service").definedBy("..service..")
.layer("Dao").definedBy("..dao..")
.whereLayer("Controller").mayNotBeAccessedByAnyLayer()
.whereLayer("Service").mayOnlyBeAccessedByLayers("Controller")
.whereLayer("Dao").mayOnlyBeAccessedByLayers("Service");
// 领域规则:领域层不许依赖 Spring(保持纯净)
@ArchTest
static final ArchRule domainPure = noClasses()
.that().resideInAPackage("..domain..")
.should().dependOnClassesThat()
.resideInAPackage("org.springframework..");
}
PR 违反规则 → CI 直接失败。规范从「文档里的建议」变成「过不去的门禁」。
步骤 3:技术债台账管理
| 编号 | 债务 | 引入原因 | 利息(不还的代价) | 本金(偿还成本) | 优先级 |
|------|------|---------|------------------|----------------|--------|
| TD-01 | 订单模块未拆服务 | 当初赶上线 | 每次发布全量回归,30min→2h | 3 人周 | 高 |
| TD-02 | 课程表缺索引 | 早期数据少无感 | 慢查询已出现 3 次 | 0.5 人天 | 高 |
| TD-03 | 前端还在用旧组件库 | 历史遗留 | 新需求开发慢 20% | 5 人周 | 中 |
| TD-04 | 单点 Redis 无哨兵 | 省钱 | 挂了就全站缓存失效 | 1 人周 | 高 |