mcpField
D
ddd-architecture-selector

ddd-architecture-selector

github.com/full-stack-skills开发17123 次安装4 周前更新
代码仓库

关于 ddd-architecture-selector

面向后端开发者、架构师和技术负责人,依据团队规模、业务复杂度与技术栈,比较并选择 5 种 DDD 架构。还提供 CQRS、领域分类和微服务拆分建议,并指向后续实现指南。

主要功能

  1. 01比较 Layered、Onion、Hexagonal、Clean 和 COLA
  2. 02按团队与业务情况推荐架构
  3. 03评估 CQRS 与 Event Sourcing 层级
  4. 04划分核心域、通用域和支撑域
  5. 05提供有界上下文拆分建议
  6. 06链接到具体架构指南

适用场景

  1. 01为新 DDD 项目选择架构
  2. 02比较架构以规划迁移
  3. 03判断是否需要 CQRS 或 Event Sourcing
  4. 04依据有界上下文规划微服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/full-stack-skills/ddd-skills --skill ddd-architecture-selector

安装后在 Claude Code 中输入/ddd-architecture-selector确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
examples/
01-ecommerce-platform.md
02-enterprise-logistics.md
03-fintech-billing.md
04-healthcare-payer-system.md
05-saas-startup-evolution.md
references/
06-clean-ddd-hexagonal-strategic.md
11-partme-08-microservice-models.md
12-partme-10-ddd-middle-platform.md
13-partme-19-principles.md
14-partme-20-distributed-qa.md
references/guides/
02-cheatsheet.md
07-comparison-matrix.md
09-faq.md
10-gotchas.md
references/patterns/
01-architecture-deep-comparison.md
03-clean-ddd-hexagonal-cqrs.md
04-clean-ddd-hexagonal-hexagonal.md
05-clean-ddd-hexagonal-layers.md
08-ddd4j-architecture-deep-dive.md
15-per-architecture-guide.md
16-reference-implementations.md

详细介绍

DDD 架构选择器

架构选择决策指南,根据项目背景评估 5 种 DDD 架构模式(分层架构、洋葱架构、六边形架构、整洁架构、COLA),涵盖团队规模、业务复杂度、技术栈、基础设施变更频率和生态偏好。

工作流

步骤 1:收集项目背景
  • 团队规模和 DDD 经验水平
  • 业务复杂度(简单 CRUD/中等/高)
  • 技术栈(Spring Boot/Go/Node.js/.NET/Python)
  • 基础设施变更频率(低/中/高)
  • 多入口需求(REST + CLI + MQ + gRPC?)
  • 测试覆盖率要求(单元/集成/E2E)
  • 生态偏好(中国社区/国际社区)
步骤 2:运行决策矩阵
  • 从 7 个或更多维度比较 5 种架构
步骤 3:应用决策树
  • 复杂度 → 团队规模 → 技术栈 → 推荐架构
步骤 4:推荐 CQRS 级别
  • L0:无,L1:模型分离,L2:数据库分离,L3:事件溯源
步骤 5:划分领域类型
  • 核心/通用/支撑 → 为不同领域应用不同架构
步骤 6:建议微服务拆分
  • 一个 BC → 一个服务,并提供合并/拆分规则
步骤 7:指向特定架构技能
  • 链接到详细的实现指南

适用场景(及不适用场景)

✅ 适用场景❌ 不适用场景
启动新项目:需要确定架构架构已经确定 → 直接使用对应技能
比较多种 DDD 架构只需学习 DDD → 使用 ddd-architecture-awesome
团队不确定哪种方案最合适需要评估现有项目的架构 → 使用 ddd-architecture-evaluator
规划微服务拆分策略选定架构后需要领域建模 → 使用 ddd-domain-designer
评估 CQRS 的必要性评估非 DDD 项目(可考虑标准 MVC)
中国企业团队进行技术决策不需要 DDD 的简单 CRUD → 使用标准 MVC
团队规模/DDD 成熟度未知需要审查现有 DDD 代码 → 使用 ddd-code-reviewer

适用边界

类别描述替代方案
✅ 负责新项目架构选择(5 种 DDD 架构)—
✅ 负责为迁移决策比较架构—
✅ 负责评估 CQRS / Event Sourcing 的必要性—
✅ 负责领域分类(核心 / 通用 / 支撑)—
✅ 负责根据限界上下文拆分微服务—
✅ 负责团队规模 → 架构映射—
⚠️ 需要基本项目背景:团队规模、业务复杂度、技术栈—
⚠️ 需要分类时需要领域专家或产品负责人参与—
❌ 不在范围内已经确定架构——请勿使用此技能ddd-architecture-layered / ddd-architecture-onion / ddd-architecture-hexagonal / ddd-architecture-clean / ddd-architecture-cola(分别使用以下命令安装:npx skills add full-stack-skills/ddd-skills --skill <name>)
❌ 不在范围内只需学习 DDD 和相关概念——不应使用此技能ddd-architecture-awesome(安装命令:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-awesome)
❌ 不在范围内评估现有架构的健康度和质量——请勿使用ddd-architecture-evaluator(安装命令:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-evaluator)
❌ 不在范围内选择架构后进行领域建模 / 聚合设计——请勿使用ddd-domain-designer(安装命令:npx skills add full-stack-skills/ddd-skills --skill ddd-domain-designer)
❌ 不在范围内审查代码是否符合 DDD——请勿使用此技能ddd-code-reviewer(安装命令:npx skills add full-stack-skills/ddd-skills --skill ddd-code-reviewer)
❌ 不在范围内非 DDD / 标准 MVC 项目——请勿使用此技能使用标准 MVC 指南(非 DDD 技能)

适用对象

此技能面向:后端开发人员(实施 DDD 架构)、软件架构师(评估和选择模式)、技术负责人(审查团队实施情况)和 DDD 初学者(学习领域驱动设计基础知识)。

规则

  1. 架构选择必须至少评估 5 个维度。
  2. 切勿默认推荐 Event Sourcing——仅在 L2 CQRS 成功后推荐。
  3. 团队规模和领域复杂度必须是首要选择因素。

5 种架构决策矩阵

维度LayeredOnionHexagonalCleanCOLA
学习成本★☆☆★★★★★★★★★★★☆
业务复杂度适配度★☆☆★★★★★★★★★★★★
CRUD 效率★★★★☆☆★☆☆★☆☆★★☆
基础设施可替换性★☆☆★★★★★★★★★★★☆
测试友好度★☆☆★★★★★★★★★★★★
中文社区★★★★☆☆★☆☆★☆☆★★★
代码生成支持良好较差较差较差极佳
模块物理隔离低中中高高
演进路径清晰度★☆☆★★★★★★★★★★★★
适配团队规模1-55-155-1515-505-50
起源Martin FowlerJeffrey Palermo (2008)Alistair Cockburn (2005)Robert C. Martin (2012)Alibaba (2018)
架构最适合应避免的情况
Layered简单 CRUD、小团队、传统 MVC 迁移复杂业务规则、基础设施频繁变更
Onion高测试覆盖率、基础设施不断变化CRUD 密集型应用、没有抽象经验的团队
Hexagonal多入口系统、微服务标准化简单的单入口 CRUD、快速原型
Clean大型企业系统、严格的物理隔离小团队(<5 人)、快速 MVP 迭代
COLA中国 Spring Boot 生态、工程规范非 Java 技术栈、国际团队

3 步决策树

步骤 1:评估业务复杂度
Business Complexity?
│
├── Simple CRUD (80%+ CRUD operations)
│   └── Planning DDD adoption in future?
│       ├── No  → LAYERED ARCHITECTURE
│       └── Yes → COLA Simplified (single module)
│
├── Moderate (core business logic with rules)
│   ├── Chinese ecosystem / Spring Boot + MyBatis?   → COLA
│   ├── Value domain layer purity most?               → HEXAGONAL
│   ├── Multi-entry system (REST + CLI + MQ)?         → HEXAGONAL
│   ├── Infrastructure changes often?                 → HEXAGONAL / ONION
│   └── .NET / Python stack?                          → ONION
│
└── High (multiple BCs, microservices)
    ├── Enterprise / international team?              → CLEAN ARCHITECTURE
    ├── Chinese enterprise, per-service standards?     → COLA (multi-module)
    ├── Mixed tech stack per service?                 → HEXAGONAL per service
    └── Need microservice + standard per module?      → COLA + HEXAGONAL hybrid
步骤 2:匹配团队规模
团队规模推荐架构理由
1-5分层架构或简化版 COLA仪式最少,交付最快
5-15六边形 / 洋葱 / COLA(单模块)平衡抽象与生产力
15-50整洁架构 / COLA(多模块)物理隔离,支持团队并行工作
50+微服务 + 各服务采用六边形架构团队自治,独立部署

演进路径:团队壮大 → 逐步升级架构:1-5(分层架构)→ 5-15(六边形)→ 15-50(整洁架构/COLA)→ 50+(微服务+六边形架构)。

步骤 3:最终建议
如果你使用……那么选择……原因
Spring Boot + MyBatis + 中国团队COLA生态契合,有中文文档和脚手架
多入口(REST + CLI + MQ + gRPC)六边形架构适配器模式可处理多个入口
严格要求模块物理隔离的大型企业整洁架构强制隔离 Entity → UseCase → Adapter
基础设施经常变更(DB、MQ 替换)六边形架构 或 洋葱架构端口/适配器使替换轻而易举
快速原型 → 之后演进为 DDD分层架构 → 升级启动成本最低,演进路径清晰
业务规则复杂 + TDD六边形架构可独立测试领域层
团队刚接触 DDD,逐步采用分层架构最接近传统三层架构,学习曲线最平缓
微服务内部架构标准每个服务采用 六边形架构 + COLA端口隔离 + 工程标准
读多、查询复杂CQRS L2读写分离,独立优化
需要完整审计轨迹事件溯源(L3)事件流天然支持审计

领域划分 + 微服务拆分

领域分类(核心域 / 通用域 / 支撑域)
领域类型投入策略架构建议示例
核心域(核心域)最大投入,自主构建使用丰富领域模型的六边形架构 / 整洁架构 / COLA订单管理、支付处理、定价引擎
通用域(通用域)采购或复用开源方案分层架构或现成 SaaS身份验证、授权、通知
支撑域(支撑域)外包或低优先级分层架构或简单 CRUD报表、管理仪表盘、数据导出

关键规则:不要将六边形架构或整洁架构用于通用域/支撑域——这会浪费精力。复杂架构只留给核心域。

微服务拆分规则
  1. 默认:一个限界上下文 → 一个微服务
  2. 拆分时机:部署节奏、扩缩容需求或团队归属不同
  3. 合并时机:需要强事务一致性、上下文较小(开发时间 < 2 周)或由同一团队负责
  4. 保守起步:服务数量尽量少,按需拆分(以实际需求为依据,而非预判)
  5. 通信方式:最终一致性使用事件,强一致性使用 RPC(较少见)

CQRS 级别建议

级别描述成本架构支持适用场景
L0 — 无单一模型,单一数据库零所有架构(默认)简单 CRUD,无读写冲突
L1 — 模型分离CommandService + QueryService,共享数据库低所有架构读写差异中等
L2 — 数据库分离命令数据库 + 读取数据库(ES/从库),通过事件同步中Hexagonal / Clean / COLA读取量大,查询复杂
L3 — 事件溯源事件存储 + 投影,完整事件重放高Hexagonal / Clean审计追踪、时态查询、合规要求

建议:从 L0 开始,确认确有更高级别的需求。只有在采用 Hexagonal 或 Clean 架构以实现适当的端口隔离时,才应采用 L2 及更高级别。

架构技能导航

已选架构下一项技能
Layeredddd-architecture-layered(安装:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-layered)
Onionddd-architecture-onion(安装:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-onion)
Hexagonalddd-architecture-hexagonal(安装:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-hexagonal)
Cleanddd-architecture-clean(安装:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-clean)
COLAddd-architecture-cola(安装:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-cola)

相关技能:ddd-cqrs-architecture / ddd-domain-designer / ddd-architecture-evaluator(均可通过 npx skills add full-stack-skills/ddd-skills --skill <name> 安装)

注意事项

参见 references/gotchas.md,了解 15 个易踩的坑。

常见问题

参见 references/faq.md,查看 15 个问答。

安全与保障

此技能纯属文档内容。它不会收集用户数据,不会访问外部服务或网络,也不包含可执行脚本。

参考资料

参见 references/,了解深入对比、微服务/领域、clean+DDD+hexagonal、ddd4j 分析、注意事项、常见问题、外部资源和 5 个案例研究。

评论

支持 Markdown