diff --git a/README.md b/README.md index 6ac6c3f..be427c1 100755 --- a/README.md +++ b/README.md @@ -5,15 +5,12 @@ ## 前言 -前一段时间在整理后端的架构和选型,关于微服务设计这部分,也预留 DDD 的”作业“(其实从19年就开始关注在项目中用 DDD 进行业务领域建模),但对于如何工程化落地 DDD 还没有一个清晰的思路,现有应用架构中的分层模型还是 MVC;关于领域划分,边界上下文、防腐层等 DDD 的经典理论抱有”赞同“,却又限制于没有实践指导的“工具”,故一直没有这部分的”行动“。 +年初一段时间在整理后端的架构和选型,关于微服务设计这部分,也预留 DDD 的“作业”(其实从19年就开始关注在项目中用 DDD 进行业务建模),但对于如何工程化落地 DDD 还没有一个清晰的思路,现有应用架构中的分层模型主要还是遵循 MVC;关于领域划分,边界上下文、防腐层等 DDD以及相关的经典理论抱有”赞同“,却又限制于没有实践指导的“工具”,故一直没有这部分的“行动”。 +前一段时间看了 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》)。 -最近看了 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,并用于实际项目指导目前团队的应用架构的演进。 @@ -26,6 +23,25 @@ +## 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 回顾总结 +- [x] [Source code](https://github.com/siu91/cargo-tracker) + + ## DDD @@ -65,21 +81,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) - # ### AAA 分层设计