Musashi vs Kojiro:软件架构可以从基础中学到什么

发布: (2025年12月18日 GMT+8 08:56)
6 min read
原文: Dev.to

Source: Dev.to

在日本历史上,有一场决斗被人记住的不是它的壮观——而是它的克制。

佐佐木 小次郎身着荣誉的装束:长刀、完美的姿势、仪式、声望、形态。
宫本 武藏迟到而来,没有盔甲,也没有花哨的动作,手持一把用桨雕刻的木剑。

决斗很快结束——并不是因为小次郎软弱,而是因为武藏领悟了更深的道理:在不确定的条件下,基础胜过华丽。

现代软件架构每天都在上演这场决斗。

现代小次郎:“我们需要微服务来扩展”

每个创业公司最终都会听到这句话:

“我们需要微服务来扩展。”

有时这句话是对的,但大多数情况下它说得太早——在需要扩展之前,在找到产品‑市场匹配之前,甚至在团队还不知道要扩展什么之前。

典型的早期创业公司画像

  • 1–3 名工程师
  • 需求不稳定
  • 没有真正的流量压力
  • 预算有限
  • 快速迭代周期

然而他们却去使用:

  • Kubernetes
  • 服务网格
  • 分布式部署
  • 多数据库策略
  • 叠加在抽象之上的云抽象

这就像小次郎披着仪式盔甲去参加根本不需要它的战斗。微服务解决的是组织层面的规模问题,而不是早期的混乱。

在这个阶段,你用 一个硬问题(代码结构)换来了 五个更难的问题

  • 网络边界
  • 部署复杂性
  • 可观测性开销
  • 安全面
  • 分布式故障模式

刀剑虽好,但战场不对。

Musashi的选择:模块化单体

Musashi并没有拒绝刀剑;他拒绝的是不必要的仪式。其在架构上的等价物是 模块化单体

模块化单体的特征是:

  • 一个可部署的应用
  • 具有严格的内部边界和纪律

关键属性

  • 单一代码库
  • 单次部署
  • 明确的模块所有权
  • 没有跨模块泄漏
  • 域之间的显式契约

示例结构

/users
  /domain
  /service
  /controller

/billing
  /domain
  /service
  /controller

/analytics
  /domain
  /service
  /controller

每个模块:

  • 拥有自己的数据
  • 暴露接口
  • 隐藏实现细节

这并不是“仅仅是文件夹”;而是有意的分离——Musashi的木刀:简洁、专注、致命。

为什么它在早期对决中获胜

运行成本低

  • 部署一次,监控一次,调试一次。
  • 基础设施费用保持单调——这本身就是一个特性。
  • 没有需要照看的集群,也不必在交付前理解服务网格。

适应速度快

  • 早期需求每天都在变化。
  • 模块化单体让你可以自信地重构,内部变动不会产生连锁影响,快速前进而无后顾之忧。

安全更容易

  • 单一应用意味着暴露面更少,认证流程更简洁,数据边界更清晰。
  • 分布式安全更为困难。

团队清晰

  • 即使只有两名开发者:一人负责认证,一人负责分析。
  • 责任明确,所有权可见;不存在“谁把生产环境弄坏了?”的谜团。

使之成败的纪律

Musashi 仍在不懈训练。没有纪律,模块化单体系统会失败。

重要规则

  • 模块之间禁止直接访问数据库(DB)。
  • 禁止从其他模块导入内部服务。
  • 只能通过已定义的接口进行通信。
  • 共享代码必须放在显式的共享层中。

违反这些规则会导致纠结的单体系统,而不是模块化的——那是 cosplay,而不是 Musashi。

扩容时刻(小次郎失利之处)

When scale actually arrives:

  • Traffic increases.
  • Specific domains get hot.
  • Team size grows.

At that point:

  • Each module already behaves like a service.
  • Boundaries are already enforced.
  • Extraction becomes mechanical, not emotional.

You can:

  • Containerize a single module.
  • Deploy it independently.
  • Move it to Cloud Run, ECS, Railway, etc., while leaving the rest untouched.

No rewrite, no panic, no “three months to re‑architect.” The system evolves; it doesn’t reset. This is Musashi adapting mid‑fight—not Kojiro trapped by form.

为什么我向早期创始人推荐它

它优化了以下方面:

  • 学习
  • 成本
  • 速度
  • 清晰度
  • 未来的选择性

你并不是在拒绝微服务,而是在“赚取”它们。微服务是一种工具——就像小次郎的剑——而不是严肃性的徽章。

最昂贵的架构是你在理解问题之前就构建的那个。

Back to Blog

相关文章

阅读更多 »