一、概念
DDD:中文翻译为领域驱动设计(Domain-Driven Design),是一种设计思想,最早是Eric Evans(埃里克·埃文斯)在2003年《Domain-Driven Design –Tackling Complexity in the Heart of Software》一书中提出的概念,提出之后的很多年都不温不火。后来随着微服务架构的兴起,系统的规模和复杂度直线上升,才逐渐变得流行起来。
二、DDD解决什么问题?
近些年,微服务大行其道,微服务有很多优点,我们这里就不再一一赘述。但是微服务项目依然会有很多新的问题,比如说微服务要如何拆分、要如何扩展?怎么样才能构建一个高内聚,低耦合的一个微服务?并且随着、项目的持续时间越来越长,业务越来越复杂,项目的复杂性也随之上升。各个微服务仍然会出现膨胀退化的问题。更严重的问题是业务也是随时变化,我们对业务的理解永远跟不上业务的变化,经过若干次版本以及人员的更迭,任何前期设计的模型,都无法从容应对。如果不幸在某一次迭代中留下一个小小的隐患,在以后就会逐渐的被放大,最终整个项目变得难以维护。
那在项目长期迭代中,我们怎么样保软件质量的稳定呢?DDD的架构模型就非常好的契合了现在的微服务时代,对于我们去构建微服务体系以及去落地现在非常流行的一个中台架构,都提供了非常好的一个理论指导。在复杂系统中使用DDD&