Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/siu91/AAA
Browse files Browse the repository at this point in the history
  • Loading branch information
siu91 committed Jan 11, 2023
2 parents e934667 + 98d50b8 commit 94bb755
Showing 1 changed file with 22 additions and 21 deletions.
43 changes: 22 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,并用于实际项目指导目前团队的应用架构的演进。



Expand All @@ -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

Expand Down Expand Up @@ -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 分层设计
Expand Down

0 comments on commit 94bb755

Please sign in to comment.