你以为你在做架构,其实你只是在延迟做决定

32 阅读3分钟

一、一个你一定听过、但从没人敢拆穿的说法

在系统设计评审会上,我们经常会听到这些话:

  • “这个先预留一下,后面再决定”
  • “现在先写死,等业务清晰了再抽象”
  • “先用配置,未来再升级成引擎”
  • “先放在一个服务里,之后再拆”

听起来都很合理,甚至很“专业”。

但如果你把这些话翻译成大白话,其实意思是:

我现在不想为这个问题做决定。


二、架构不是“想清楚了再做”,而是为不可避免的选择买单

很多人误以为:

架构 = 把未来都想清楚

这是错的。

真正的架构是:

在信息不完整的情况下,依然要做出明确选择。

因为不做选择,本身也是一种选择 ——
选择把复杂度推给未来的自己、同事、甚至公司。


三、最常见的三种“假架构设计”

1️⃣ “配置化一切”假象

你见过这样的系统:

  • 所有逻辑都走配置
  • JSON 比代码还复杂
  • 一次问题排查,要查三层配置、两个数据库、一个缓存

表面看:

灵活、可扩展、可配置

真实情况是:

系统失去了“行为边界”,任何人都可以在不理解系统的情况下修改它。

这是典型的:
把“决策权”从工程,交给了混乱。


2️⃣ “以后再拆”综合征

很多系统一开始是一个大服务,然后说:

“没事,后面可以拆微服务”

但你很少看到真正顺利拆成功的。

因为真实世界是:

  • 数据已经耦合
  • 状态已经共享
  • 隐式依赖已经形成
  • 线上流量不允许你随意切

所谓“以后再拆”,
往往意味着:

永远拆不了。


3️⃣ “通用抽象”过度设计

有些人非常喜欢:

  • 通用引擎
  • 通用模型
  • 通用流程
  • 通用接口

结果是:

  • 没一个业务真正用得顺
  • 每个业务都要打补丁
  • 抽象层反而成了最大阻力

这是因为:

抽象不是提前想出来的,是被具体问题逼出来的。


四、真正成熟的架构师,反而做三件“看起来不高级”的事

✅ 1. 明确拒绝未来

他们会说:

“这个版本不支持这种情况。”

不是因为做不到,而是因为:

  • 每多支持一种情况
  • 就多引入一条不可逆的复杂度路径

✅ 2. 用“限制”换“清晰”

例如:

  • 明确哪些状态不能跳
  • 明确哪些接口不保证幂等
  • 明确哪些操作不可回滚

这不是不负责任,而是:

对系统长期可维护性负责。


✅ 3. 愿意背锅式决策

真正的架构决策是:

“如果这个选择错了,我知道后果是什么。”

而不是:

“反正现在也看不出来,先放着。”


五、一个结论,可能会让很多人不舒服

架构不是“设计得多灵活”,
而是你敢为多少不灵活负责。