返回 Skill 列表
extension
分类: 开发与工程无需 API Key

architecture-monolith

模块化单体架构工作流程,用于在单一可部署单元中实现强领域边界、事务一致性以及操作简便性。当团队需要快速交付和一致的数据一致性,并且复杂度可控时使用;当必须有独立运行时扩展边界时不要使用。

person作者: jakexiaohubgithub

Architecture Monolith

Overview

Use this skill to design modular monoliths that preserve internal autonomy without introducing distributed-system overhead.

Scope Boundaries

  • Product scope or team size favors a single deployable unit.
  • Cross-domain workflows require strong transactional consistency.
  • Operational simplicity is a top constraint.

Core Judgments

  • Module boundaries: domain cohesion and dependency direction inside one codebase.
  • Internal contracts: which module APIs are allowed and how enforced.
  • Data ownership in shared database: logical ownership and write access discipline.
  • Future extraction seams: where boundaries should support later service splits.

Practitioner Heuristics

  • Treat modules like products with stable public interfaces.
  • Forbid cross-module database writes except through explicit module APIs.
  • Keep shared kernel minimal and intentionally versioned.
  • In dynamic languages, define explicit module interface types to avoid ad hoc maps and pervasive casts at boundaries.

Workflow

  1. Partition core domains into modules with clear responsibility.
  2. Define allowed dependency directions and anti-corruption boundaries.
  3. Specify module-level contracts for commands, queries, and events.
  4. Align transactional scope with module invariants.
  5. Add observability by module to expose coupling hotspots.
  6. Record extraction candidates and triggers for future decomposition.

Common Failure Modes

  • Modular monolith degrades into "big ball of mud" via unrestricted imports.
  • Shared tables bypass module contracts and break ownership.
  • Runtime simplicity hides growing conceptual complexity.

Failure Conditions

  • Stop when module boundaries cannot be enforced in code review/tooling.
  • Stop when critical invariants span modules without clear ownership.
  • Escalate when required independent scaling/deployment is no longer feasible.