Understanding Domain Driven Design
DDD takes its name from the book of the same name by Eric Evans (2003). The subtitle beautifully clarifies what the goal is—Tackling complexity in the heart of software.
In this section, we will learn about the domain model, ubiquitous language, layered architecture, DDD patterns, and bounded contexts.
DDD is a widely adopted modeling technique to build rich and expressive domains. It is considered to be behind modern approaches such as microservices development.
The idea behind DDD is discovering how to model our software in a way that mirrors the problem we are facing in the real world. It is expected that if properly modeled, our software will be readable, will adhere to requirements, and will work properly.
Of course, there is no magic recipe for that: DDD provides a toolkit of patterns, best practices, and ideas to implement this modeling. This approach works particularly well with complex domains, but it might be overkill...