|
| 1 | +# 00-DDD专栏规划 |
| 2 | + |
| 3 | +## 1 DDD、微服务、中台和平台 |
| 4 | + |
| 5 | +平台目标:解决公共能力复用问题,防止公司重复造轮子。 |
| 6 | + |
| 7 | +平台只是将部分通用的公共能力独立为共享平台。虽可通过API或数据对外提供公共共享服务,解决系统重复建设的问题,但这类平台并未和企业内其它平台或应用,实现页面、业务流程和数据从前端到后端的全面融合,且未将核心业务服务链路作为一个整体方案考虑,各平台仍分离独立。 |
| 8 | + |
| 9 | +中台是**企业级能力复用**平台。中台来源于平台,但中台和平台相比,更多体现理念转变,主要体现在如下关键能力: |
| 10 | + |
| 11 | +- 对前台业务的快速响应能力 |
| 12 | +- 企业级复用能力 |
| 13 | +- 从前台、中台到后台的设计、研发、页面操作、流程服务和数据的无缝联通、融合能力 |
| 14 | + |
| 15 | +中台首先体现一种企业级能力,它提供一套企业级整体解决方案,解决小到企业、集团,大到生态圈的能力共享、联通和融合问题,支持业务和商业模式创新。通过平台联通和数据融合为用户提供一致的体验,更敏捷地支撑前台一线业务。 |
| 16 | + |
| 17 | +中台概念是将各能力串联成一个平台产品,为前端提供一个业务需求方案。“中台是企业级能力复用平台”。如交易平台,它提供售前、售中、售后能力,而业务线去串联各域能力,去完成他们的业务流程,这是交易平台要做的,而交易中台是依赖交易平台的基础能力,在如下方面改进: |
| 18 | + |
| 19 | +- 流程编排,为前台提供一个从售前到售中到售后能力的一个串联,它是跨服务 |
| 20 | +- 接入便利,提供从前端到后端可配置、可扩展的一个便利的交易解决方案 |
| 21 | + |
| 22 | +### 关联关系 |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | +平台和中台在业务架构更多偏向于业务模型,形成平台和中台的过程,也是业务领域不断细分的过程。在这阶段要将通用能力不断聚合、建立领域模型,这过程和DDD战略设计就很匹配。 |
| 27 | + |
| 28 | +当平台和中台完成领域建模后,就要通过微服务去完成系统架构,而此时DDD架构设计和微服务设计完美契合,可以说平台、中台及微服务是DDD落地最佳场景,因此DDD近年火爆。 |
| 29 | + |
| 30 | +“微服务咋拆分和设计才合理,拆多小叫微服务?”微服务边界历来最易产生争议。作为中台,需将通用的可复用业务能力沉淀到中台业务模型,实现企业级能力复用。因此中台首要问题就是中台领域模型的重构。而中台落地时,依然面临微服务设计和拆分问题。 |
| 31 | + |
| 32 | +## 2 领域驱动的本质 |
| 33 | + |
| 34 | +DDD和微服务都是从业务领域出发,将大的业务领域分解为小的子域,完成领域建模,用领域模型指导微服务设计和落地。二者都是分而治之来降低业务领域认识和软件产品建设的复杂度。 |
| 35 | + |
| 36 | +DDD在领域建模过程中最关键就是完成业务边界划分,这边界包括领域模型之间的边界,也包含领域模型内部聚合之间的边界,有了这边界就可设计出高内聚低耦合微服务。这是战略设计阶段的关键。 |
| 37 | +而战术设计阶段,用DDD分层架构实现微服务内各层解耦。在发生变化时,降低各层相互影响,保证各层模型稳定。 |
| 38 | + |
| 39 | +DDD和微服务是天作之合,DDD知识点多,也抽象,体系庞大,又缺少实践经验和案例指导,很多人对 DDD 应用都有这样那样困惑,哪怕知道 DDD 好处,但也无从下手。早在 2003 年就诞生的 DDD,怎么来指导“迟到”近 20 年才大热的微服务设计呢? |
| 40 | + |
| 41 | +### 实践DDD |
| 42 | + |
| 43 | +1. 理解 DDD 的核心设计思想,搞清楚 DDD、微服务和中台之间的关系。中台本质是业务模型,微服务是业务模型的系统落地,DDD 是一种设计思想,它可同时指导中台业务建模和微服务设计,它们之间就是铁三角关系。DDD 强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计 |
| 44 | +2. 就是通过战略设计,建立领域模型,划分微服务边界。这步是关键,可借助专栏的经验 |
| 45 | +3. 通过战术设计,从领域模型转向微服务设计和落地。此时,边界清晰、可持续演进的微服务架构雏形就在面前 |
| 46 | + |
| 47 | +## 3 DDD 的现实意义 |
| 48 | + |
| 49 | +DDD: |
| 50 | + |
| 51 | +- 战略设计用来建立业务模型,适于企业级中台,也适用于项目级的领域建模 |
| 52 | +- 战术设计适用于微服务设计 |
| 53 | + |
| 54 | +## 4 规划 |
| 55 | + |
| 56 | +DDD 核心知识体系包括:领域、子域、核心域、通用域、支撑域、限界上下文、实体、值对象、聚合和聚合根等: |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +- 用 DDD 分层架构带你弄懂微服务架构各层之间的关系,并完成微服务分层和代码模型设计 |
| 61 | +- 用 DDD 战略设计和事件风暴带你完成领域建模和企业级中台业务建模 |
| 62 | + |
| 63 | +用案例带你完整走一遍 DDD 战略设计和战术设计的全流程,学习 DDD 在领域模型和微服务设计过程中的技术要点。带你深化微服务架构设计原则和注意事项,建立适应你公司技术能力和文化的微服务,建立演进式的微服务架构。 |
| 64 | + |
| 65 | +### 进阶篇 |
| 66 | + |
| 67 | +领域事件、DDD 分层架构、常见微服务架构模型及中台设计思想: |
| 68 | + |
| 69 | +- 咋通过领域事件实现微服务解耦? |
| 70 | +- 微服务分层咋设计? |
| 71 | +- 咋实现层与层的服务协作? |
| 72 | +- 微服务架构模型对比分析,了解领域模型和微服务分层意义 |
| 73 | +- 中台设计的核心思想,探讨咋实现前中后台的协同和融合?咋利用 DDD 进行中台设计? |
| 74 | + |
| 75 | +### 实战 |
| 76 | + |
| 77 | +- 中台和领域建模的实战:带你了解如何用 DDD 设计思想构建企业级可复用的中台业务模型,了解事件风暴以及用事件风暴构建领域模型的过程。 |
| 78 | +- 微服务设计实战:带你了解如何用 DDD 设计微服务代码模型,如何从领域模型完成微服务设计,建立领域模型与微服务代码模型的映射关系,如何完成微服务的架构演进等。 |
| 79 | + |
| 80 | +用典型案例将 DDD 所有的知识点串联在一起,带你深入了解如何用 DDD 的设计思想来完成领域建模和微服务设计的全流程。 |
| 81 | + |
| 82 | +最后总结微服务设计原则及分布式架构设计的关键注意事项。 |
| 83 | + |
| 84 | +## FAQ |
| 85 | + |
| 86 | +> DDD适合做游戏开发的服务架构吗?感觉微服务化影响RT,而且分布式事务也不好做。 |
| 87 | +
|
| 88 | +DDD本身和微服务只是有指导关系。DDD是可指导微服务的落地的,但并不代表只有通过微服务才能做DDD的设计,它们是没有反向的推导关系。DDD的落地其实不一定是要通过微服务的方式去做落地,而且DDD本身是一个设计的概念,我们可以不用纠结DDD和代码的最终落地。影响RT、分布式事务,这些实际上都是微服务问题。 |
0 commit comments