Skip to content
返回架构决策

备选分析

永远考虑至少 2 备选——首想法罕最佳、"无备选"是红旗。

为什么

脑中首架构常是熟悉的而非最好的。考虑备选逼你列还有什么可能及为何不选——要么确认首想法(现有理由)要么揭更好选项。"无备选"是最常见 ADR 缺陷且最强信号决策被合理化非做。即使首想法最佳,备选节记了拒什么及为何,防重审("为何不用 X?"——在 ADR)。纪律是选前生备选、非选后辩。

何时使用

每中+决策。1-2 小时。仅便宜决策可跳过(见 reversibility)。

如何做

1. 述问题非解——备选来自重框问题
2. 生至少 3 备选(逼自己;第 3 常是洞察):
   - 显然的(默认会做的)
   - 相反的(唱反者会建议的)
   - 第三路(完全不同框)
3. 每备选记:
   - 做什么好
   - 做什么差
   - 采需什么(成本、迁移、学)
4. 按决策标准比(见 decision-criteria)
5. 选;把备选+理由记 ADR
6. 若生不出 3,你不理解问题——多研究

示例

问题:"API 限流"

备选:
  1. 应用内令牌桶(Redis+lua)——显然、准、加 Redis 依赖
  2. 云供方限流(API Gateway)——相反、无码、欠灵活
  3. 边缘限流(Cloudflare)——第三路、流量到源前、便宜

比较:
  1:准,但 Redis 依赖+应用延迟
  2:无码,但每区域限+厂商专
  3:最便宜、全局限、但粗(每 IP 非每用户)

决策:3 做每 IP、1 做每用户(已认证)。
  两者分层。备选+理由在 ADR-017。

常见问题

  • ⚠生稻草人备选——"备选 2:什么都不做"非真备选;每应可行选择。

最佳实践

  • ✓逼第 3 备选即使你以为知答案——它是揭前两隐假设的那个。
  • ✓把拒备选记够详细使未来工程师不重提——"我们考虑了 X、因 Y 拒"关问题。

相关资源