From 13f74a7ed929d66b93acef2a8c2bb7a1782b3894 Mon Sep 17 00:00:00 2001 From: Siu Date: Tue, 19 Jul 2022 16:56:22 +0800 Subject: [PATCH 1/4] Update README.md --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6ac6c3f..2fcaaf6 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,11 @@ ## 前言 -前一段时间在整理后端的架构和选型,关于微服务设计这部分,也预留 DDD 的”作业“(其实从19年就开始关注在项目中用 DDD 进行业务领域建模),但对于如何工程化落地 DDD 还没有一个清晰的思路,现有应用架构中的分层模型还是 MVC;关于领域划分,边界上下文、防腐层等 DDD 的经典理论抱有”赞同“,却又限制于没有实践指导的“工具”,故一直没有这部分的”行动“。 + 年初一段时间在整理后端的架构和选型,关于微服务设计这部分,也预留 DDD 的“作业”(其实从19年就开始关注在项目中用 DDD 进行业务建模),但对于如何工程化落地 DDD 还没有一个清晰的思路,现有应用架构中的分层模型主要还是遵循 MVC;关于领域划分,边界上下文、防腐层等 DDD以及相关的经典理论抱有”赞同“,却又限制于没有实践指导的“工具”,故一直没有这部分的“行动”。 + 前一段时间看了 COLA 的架构和一些设计,觉得 COLA 具有足够的理论依据也具有相当的落地实践性,是一个不错的 DDD 落地的方法论和实践指导,但个人在理解 COLA 的设计时还是觉得有一些问题。 主要集中在没有足够的场景案例去分析整个落地实践的路径,没有深入阐述分层分包的原则和实际开发联系;特别是 DEMO 上比较粗糙,与 COLA 阐述的一些架构原则没有呼应,细节上 COLA 中的 DEMO 不具典型意义;另外就是没有介绍对于 DDD 、CQRS 的借鉴,如何在架构和实践中的体现。 - -最近看了 COLA 的架构和一些设计,觉得 COLA 具有足够的理论依据也具有相当的落地实践性,是一个不错的 DDD 落地的方法论和实践指导,但个人在理解 COLA 的设计时还是觉得有一些问题。 主要集中在没有足够的场景案例去分析整个落地实践的路径,没有深入阐述分层分包的原则和实际开发联系;特别是 DEMO 上比较粗糙,与 COLA 阐述的一些架构原则没有呼应,细节上 COLA 中的 DEMO 不具典型意义;另外就是没有介绍对于 DDD 、CQRS 的借鉴,在架构和实践中的关系。 - - - -由此,并就想着开始准备自己“组装”一个 DDD 的落地实践:从理清 DDD 的重要理念和方法,找到 DDD 得落地的最佳实践;结合使用 COLA ,CQRS 的设计理念,融合微服务框架以及包含一些后端开发时会涉及的常用的库/组件(ORM、Flyawy、Skywaking、MapStruct、Event Source/Event Driven(Spring Event/Spring Cloud Stream/EventBus)等),按照当前我个的理解把这个“脚手架”项目命名为 AAA(Application Architecture Archetype(应用架构原型)),希望能够真正落地实践 DDD,并用于实际项目指导目前团队的应用架构的演进。 + 由此,并就想着开始准备自己“组装”一个 DDD 的落地实践:从理清 DDD 的重要理念和方法,找到 DDD 落地的最佳实践;再结合使用 DDD,COLA ,CQRS 的设计理念,融合微服务框架以及包含一些后端开发时会涉及的常用的库/组件(ORM、Flyway、SkyWalking、MapStruct、Event Source/Event Driven(Spring Event/Spring Cloud Stream/EventBus)等)写一个“应用原型”(Evans 在 DDD 中提到的经典案例《 Cargo Tracker》)。 From 6a996a2141c056067e5cc70f42a55cdac49eaabe Mon Sep 17 00:00:00 2001 From: Siu Date: Tue, 19 Jul 2022 16:56:58 +0800 Subject: [PATCH 2/4] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2fcaaf6..5709a29 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ ## 前言 - 年初一段时间在整理后端的架构和选型,关于微服务设计这部分,也预留 DDD 的“作业”(其实从19年就开始关注在项目中用 DDD 进行业务建模),但对于如何工程化落地 DDD 还没有一个清晰的思路,现有应用架构中的分层模型主要还是遵循 MVC;关于领域划分,边界上下文、防腐层等 DDD以及相关的经典理论抱有”赞同“,却又限制于没有实践指导的“工具”,故一直没有这部分的“行动”。 +年初一段时间在整理后端的架构和选型,关于微服务设计这部分,也预留 DDD 的“作业”(其实从19年就开始关注在项目中用 DDD 进行业务建模),但对于如何工程化落地 DDD 还没有一个清晰的思路,现有应用架构中的分层模型主要还是遵循 MVC;关于领域划分,边界上下文、防腐层等 DDD以及相关的经典理论抱有”赞同“,却又限制于没有实践指导的“工具”,故一直没有这部分的“行动”。 - 前一段时间看了 COLA 的架构和一些设计,觉得 COLA 具有足够的理论依据也具有相当的落地实践性,是一个不错的 DDD 落地的方法论和实践指导,但个人在理解 COLA 的设计时还是觉得有一些问题。 主要集中在没有足够的场景案例去分析整个落地实践的路径,没有深入阐述分层分包的原则和实际开发联系;特别是 DEMO 上比较粗糙,与 COLA 阐述的一些架构原则没有呼应,细节上 COLA 中的 DEMO 不具典型意义;另外就是没有介绍对于 DDD 、CQRS 的借鉴,如何在架构和实践中的体现。 +前一段时间看了 COLA 的架构和一些设计,觉得 COLA 具有足够的理论依据也具有相当的落地实践性,是一个不错的 DDD 落地的方法论和实践指导,但个人在理解 COLA 的设计时还是觉得有一些问题。 主要集中在没有足够的场景案例去分析整个落地实践的路径,没有深入阐述分层分包的原则和实际开发联系;特别是 DEMO 上比较粗糙,与 COLA 阐述的一些架构原则没有呼应,细节上 COLA 中的 DEMO 不具典型意义;另外就是没有介绍对于 DDD 、CQRS 的借鉴,如何在架构和实践中的体现。 - 由此,并就想着开始准备自己“组装”一个 DDD 的落地实践:从理清 DDD 的重要理念和方法,找到 DDD 落地的最佳实践;再结合使用 DDD,COLA ,CQRS 的设计理念,融合微服务框架以及包含一些后端开发时会涉及的常用的库/组件(ORM、Flyway、SkyWalking、MapStruct、Event Source/Event Driven(Spring Event/Spring Cloud Stream/EventBus)等)写一个“应用原型”(Evans 在 DDD 中提到的经典案例《 Cargo Tracker》)。 +由此,并就想着开始准备自己“组装”一个 DDD 的落地实践:从理清 DDD 的重要理念和方法,找到 DDD 落地的最佳实践;再结合使用 DDD,COLA ,CQRS 的设计理念,融合微服务框架以及包含一些后端开发时会涉及的常用的库/组件(ORM、Flyway、SkyWalking、MapStruct、Event Source/Event Driven(Spring Event/Spring Cloud Stream/EventBus)等)写一个“应用原型”(Evans 在 DDD 中提到的经典案例《 Cargo Tracker》)。 From 6d762f5214c59b90c7cef6ad126db544d4e7d1e7 Mon Sep 17 00:00:00 2001 From: Siu Date: Tue, 19 Jul 2022 17:04:24 +0800 Subject: [PATCH 3/4] update todo list --- README.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5709a29..ea68419 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ + > DDD 部分的知识来自《DDD 实战》的学习笔记整理。 > > 例子大部分是使用原书中的案例,做了一些解读,脑图和架构图都是自己编辑的. @@ -22,6 +23,23 @@ +## TODO LIST + + + +- [x] AAA 分层设计 +- [x] 确定领域(业务需求) +- [x] DDD 战略设计:事件风暴、领域故事分析 +- [x] DDD 战术设计:提取领域对象和代码做基本映射 +- [x] DDD 战术设计:框架搭建、编码 +- [x] 增加 flyway、MapStruct、领域事件(MQ、Spring Event、Spring Cloud Stream)、微服务框架(API网关、服务发现注册等)、服务网格、模版代码 +- [ ] 内部团队分享沙龙: + - [x] 1.1 什么是领域 + - [x] 1.2 如何划分微服务边界:定义领域的边界,限界上下文 + - [x] 1.3 领域模型 + - [x] 1.4 微服务间的解耦如何设计:领域事件,EDA,领域事件整体架构 + - [ ] 1.5 DDD 分层架构以及相关的架构设计:CQRS、DDD 回顾总结 + ## DDD @@ -62,18 +80,6 @@ ![cola](assets/cola-layer-arch.png) - -## AAA (todo) - - - -- [x] AAA 分层设计 -- [x] 确定领域(业务需求) -- [x] DDD 战略设计:事件风暴、领域故事分析 -- [x] DDD 战术设计:提取领域对象和代码做基本映射 -- [x] DDD 战术设计:框架搭建、编码 -- [ ] 增加 flyway、MapStruct、领域事件(MQ、Spring Event、Spring Cloud Stream)、微服务框架(API网关、服务发现注册等)、服务网格、模版代码 - [Source code](https://github.com/siu91/cargo-tracker) # From 98d50b83fc47f8f44fdf7cf60359d65b7879a65e Mon Sep 17 00:00:00 2001 From: Siu Date: Tue, 19 Jul 2022 17:08:10 +0800 Subject: [PATCH 4/4] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ea68419..be427c1 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,8 @@ - [x] 1.3 领域模型 - [x] 1.4 微服务间的解耦如何设计:领域事件,EDA,领域事件整体架构 - [ ] 1.5 DDD 分层架构以及相关的架构设计:CQRS、DDD 回顾总结 +- [x] [Source code](https://github.com/siu91/cargo-tracker) + ## DDD @@ -79,9 +81,6 @@ ![cola](assets/cola-layer-arch.png) - -[Source code](https://github.com/siu91/cargo-tracker) - # ### AAA 分层设计