Damnatiox
DOCUMENT / published

模块化单体到微服务:什么时候应该拆?

模块化单体到微服务:什么时候应该拆? Freshness metadata last verified : 2026 08 24 version scope : stable architecture decision framework source type : architecture literature + engineering synthesis stability : stable concept 选择 判断条件 主要成

应用架构与模块化单体 2026/8/242 分钟阅读
# Java# Java 后端# 应用架构与模块化单体

模块化单体到微服务:什么时候应该拆?

Freshness metadata

  • last_verified: 2026-08-24
  • version_scope: stable architecture decision framework
  • source_type: architecture literature + engineering synthesis
  • stability: stable-concept
选择 判断条件 主要成本
Stay monolith 团队小、同一发布节奏、共享事务重要、运维能力有限 需控制耦合与构建规模
Modular monolith 业务边界可划分,但无需独立部署/扩缩;希望强制依赖 模块纪律、内部 API 与事件治理
Split service 明确团队所有权、独立部署/扩缩、数据所有权、故障隔离收益 网络失败、最终一致、平台、观察与安全成本

拆分前证据

  1. 模块 API 已稳定并有 contract tests;
  2. 该模块拥有数据,其他模块不直连其表;
  3. trace/metrics 证明独立扩缩或故障隔离有价值;
  4. 团队可运营 deploy、SLO、on-call、secret、migration;
  5. 事件/outbox/idempotency 已在单体内验证;
  6. 延迟与一致性变化得到业务接受。

“代码很多”不是充分理由。若拆分只增加 HTTP 而数据库仍共享,通常得到分布式单体。