可逆与不可逆决策

区分决策的可逆性:可逆决策快速试错,不可逆决策充分论证;数据模型、公共契约与供应商绑定多属难逆,需要投入更多评估与评审资源。

什么是可逆与不可逆决策

可逆性指决策做错之后退回原状的代价。可逆决策(内部实现、可替换组件、缓存方案)错了就改,适合快速试错;难逆决策(数据格式、公开契约、供应商绑定、组织边界)一旦落地,整改要付出迁移、兼容与协调成本,需要更多论证与评审资源。区分两者的价值在于把讨论与评审时间花在真正难逆的地方。

基本信息

可逆内部实现、可替换组件、缓存与调度策略,错了即可回退
难逆数据格式、公开契约、核心依赖与供应商绑定
基本策略把难逆部分隔离在稳定边界内,提升整体可逆空间
配套机制决策记录、退出方案与回滚演练

决策分类与节奏

类型典型例子推进节奏
可逆内部实现、缓存方案、日志格式快速试点,错了即回退
较难逆模块边界与跨团队接口小范围评审后推进
难逆数据格式、公开契约、供应商绑定充分论证并预留退出方案

典型使用场景

  • 架构决策记录:标注每项决策的可逆性,让读者知道改动代价
  • 接口设计:公开契约按难逆决策处理,先走评审与兼容测试
  • 技术试点:可逆部分交给贴近现场的人快速决策,不设过多门径
  • 供应商选择:采购前先准备退出路径与数据导出方案
  • 数据建模:存储格式与主键设计按难逆处理,变更前评估迁移方案
  • 组织调整:团队边界与归属变化属难逆决策,需同步评估架构影响

决策记录中的可逆性标注

决策记录中的可逆性标注
# 决策:订单服务改用某托管消息中间件(示意)
可逆性:较难逆
理由:消息格式与投递语义会渗入多个消费者的实现,迁移需重放
可逆前提:
  - 消息体中不携带厂商私有字段
  - 保留以标准格式落库的原始事件,支持重放
  - 消费者按抽象接口接入,切换仅替换适配层
复核时间:6 个月后评估使用成本与替代方案成熟度
决策速度应与可逆性挂钩:把可逆的事当不可逆来反复讨论,是最常见的时间浪费。
把可逆决策当难逆来推进,团队创新空间被压缩;反过来把难逆决策草率拍板,整改代价往往是初期节省的几十倍。

易错点

  • 不可逆决策草率拍板,事后整改涉及数据迁移与多方协调,代价极高
  • 可逆决策反复论证,交付节奏被拖慢,评审资源被无效占用
  • 决策记录不标注可逆性,后人无法判断改动代价而不敢动
  • 难逆部分未做隔离,耦合扩散后原本可逆的组件也变成不可逆

数据来源与参考

  • Amazon 股东信(2015):Type 1 与 Type 2 决策
  • 《软件架构:架构模式、特征及实践指南》(Richards & Ford)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌