什么是可逆与不可逆决策
可逆性指决策做错之后退回原状的代价。可逆决策(内部实现、可替换组件、缓存方案)错了就改,适合快速试错;难逆决策(数据格式、公开契约、供应商绑定、组织边界)一旦落地,整改要付出迁移、兼容与协调成本,需要更多论证与评审资源。区分两者的价值在于把讨论与评审时间花在真正难逆的地方。
基本信息
| 可逆 | 内部实现、可替换组件、缓存与调度策略,错了即可回退 |
|---|---|
| 难逆 | 数据格式、公开契约、核心依赖与供应商绑定 |
| 基本策略 | 把难逆部分隔离在稳定边界内,提升整体可逆空间 |
| 配套机制 | 决策记录、退出方案与回滚演练 |
决策分类与节奏
| 类型 | 典型例子 | 推进节奏 |
|---|---|---|
| 可逆 | 内部实现、缓存方案、日志格式 | 快速试点,错了即回退 |
| 较难逆 | 模块边界与跨团队接口 | 小范围评审后推进 |
| 难逆 | 数据格式、公开契约、供应商绑定 | 充分论证并预留退出方案 |
典型使用场景
- 架构决策记录:标注每项决策的可逆性,让读者知道改动代价
- 接口设计:公开契约按难逆决策处理,先走评审与兼容测试
- 技术试点:可逆部分交给贴近现场的人快速决策,不设过多门径
- 供应商选择:采购前先准备退出路径与数据导出方案
- 数据建模:存储格式与主键设计按难逆处理,变更前评估迁移方案
- 组织调整:团队边界与归属变化属难逆决策,需同步评估架构影响
决策记录中的可逆性标注
决策记录中的可逆性标注
# 决策:订单服务改用某托管消息中间件(示意)
可逆性:较难逆
理由:消息格式与投递语义会渗入多个消费者的实现,迁移需重放
可逆前提:
- 消息体中不携带厂商私有字段
- 保留以标准格式落库的原始事件,支持重放
- 消费者按抽象接口接入,切换仅替换适配层
复核时间:6 个月后评估使用成本与替代方案成熟度决策速度应与可逆性挂钩:把可逆的事当不可逆来反复讨论,是最常见的时间浪费。
把可逆决策当难逆来推进,团队创新空间被压缩;反过来把难逆决策草率拍板,整改代价往往是初期节省的几十倍。