DDD.IV – STRATEGIC DESIGN

As an application grows, the code quantity and complexity both grow with it. The quantity of developers and teams of developers also grow and system wide decisions have more impact and must be negotiated and decided by many people. These system wide decisions are very difficult to make because there are many points of view: design and politics intersect.

The end goal, maybe an utopia, is to have a very consistent system who spans to the entire business. However, if we take a monolithic architecture approach we will end up having subtle duplications and contradictions, while if we take a very segregated architectural approach with very small subsystems we will face consistency problems between the subsystems and their integration will become difficult.

Context, distillation and large-scale structure help to maintain consistency, modularity and fidelity to the domain model.

Context is about creating very clear BOUNDED CONTEXTS, modules, as independent as possible, and connect those modules when necessary through minimal and standardized interfaces.

Distillation is about focusing on the core domain and not in the peripheral tools used.

Large-scale structure is the global architecture of the project, what is common to all modules (BOUNDED CONTEXTS). Creating a structure of RESPONSIBILITY LAYERS is an example of a large-scale structure.

This post is part of a set of posts with my personal notes about all the chapters in the book “Domain Driven Design” by Eric Evans. I will do this as I read through the book, and take notes on the concepts I personally find more relevant.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s