DDD-领域驱动设计详解
前言
看了很多文章,也听了很多课,很少听见有人能讲好什么是领域驱动设计。要么是一大堆理论,晦涩难懂,要么就是直接上代码,也不讲清个所以然来。导致很多同学在网上随便看几篇文章,就直接说自己已经懂了,然后就是夸夸其谈,真正实战的时候,才发现这个说不通,那个讲不清的。
真正想学好《领域驱动设计》,最好简单先了解下系统架构的演变历史?之前的系统设计又是怎样的?为什么会选择DDD?这样你才能真正掌握领域渠道的设计的精髓,也能知道其优劣点(注意,任何设计都有它的优缺点,都是一个时代下特定的产物,千万别觉得它很好,就足以概括天下)。
什么是DDD?
DDD是一种拆解业务、划分业务、确定业务边界的方法, 是一种高度复杂的领域设计思想,将我们的问题拆分成一个个的域,试图分离技术实现的复杂性,主要解决的是软件难以理解难以演进的问题,DDD不是一种架构, 而是一种架构方法论,目的就是将复杂问题领域简单化,帮助我们设计出清晰的领域和边界,可以很好的实现技术架构的演进。
为什么要选择DDD?
在软件发展的演变的如今,微服务成为当前最流行的架构。但是在微服务设计过程中,往往会面临服务边界如何划分的问题,而大部分的人仅仅只会会围绕业务来进行简单的拆分,在实际落地过程中,又会面临各类问题导致最终直接拍脑袋决定。那么是否有一套成熟的理论方法来指导我们进行微服务设计了?目前来看,领域驱动设计是不错的选择。
软件架构模式的演进
这些年来随着设备和新技术的发展,软件的架构模式发生了很大的变化。软件架构模式大体来说经历了从单机、集中式到分布式微服务架构三个阶段的演进。随着分布式技术的快速兴起,我们已经进入到了微服务架构时代。