domain_driven_design
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
domain_driven_design [2018/02/15 12:52] – skipidar | domain_driven_design [2023/11/21 19:13] (current) – [DDD & Microservices] skipidar | ||
---|---|---|---|
Line 2: | Line 2: | ||
A good overview: http:// | A good overview: http:// | ||
+ | |||
+ | {{https:// | ||
== Glossary == | == Glossary == | ||
- | |Bounded Context | | | + | |Bounded Context | |
- | |Ubiquitous language | | | + | |Ubiquitous language | shared, consistent language used by all team members involved in a project, ensuring clear communication and alignment between domain experts and developers. |
|Value objects| Stores some logic from the domain. Like validation of @ in a ValueObject " | |Value objects| Stores some logic from the domain. Like validation of @ in a ValueObject " | ||
|Entity| Will be persisted as row in a database table. Its like the JPA Entity. | | |Entity| Will be persisted as row in a database table. Its like the JPA Entity. | | ||
Line 27: | Line 29: | ||
|Infrastructure Layer| The persistence logic. | | |Infrastructure Layer| The persistence logic. | | ||
- | == Scope Hiearchy == | ||
- | Here is the scope hierarchy within DDD. | ||
- | < | + | |
- | value < entity < aggregate | + | ==== DDD & Microservices ===== |
- | </code> | + | |
+ | === Overview ==== | ||
+ | |||
+ | DDD has two distinct phases. | ||
+ | |||
+ | * Strategic | ||
+ | * Tactical | ||
+ | |||
+ | The participate in the design of micro-services as following: | ||
+ | |||
+ | {{https:// | ||
+ | |||
+ | - Start by **analyzing the business domain** to understand the application' | ||
+ | - Next, **define the bounded contexts of the domain**. Each bounded context contains a domain model that represents a particular subdomain of the larger application. | ||
+ | - Within a bounded context, apply tactical DDD patterns to **define entities, | ||
+ | - Use the results from the previous step to **identify the microservices** in your application. | ||
+ | |||
+ | |||
+ | === Strategic Design === | ||
+ | In strategic DDD, you are defining the large-scale structure of the system. | ||
+ | |||
+ | === Tactical Design === | ||
+ | |||
+ | Tactical DDD provides a set of design patterns that you can use to create the domain model. | ||
+ | |||
+ | |Entities |are objects with own identifier.| | ||
+ | |Value Objects|are identified by their values. Like Address might be one. And re-created rather than copied.| | ||
+ | |Aggregate |<wrap> | ||
+ | The purpose of an aggregate | ||
+ | </wrap>| | ||
+ | |Services|In DDD terminology, | ||
+ | |||
+ | |||
+ | |||
+ | {{https:// | ||
+ | |||
+ | |||
+ | |||
+ | Overview of the process | ||
+ | |||
+ | {{https:// | ||
+ | |||
+ | ==== Single micro-service (called " | ||
+ | |||
+ | Source: | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | Architecture using clean architecture and DDD | ||
+ | {{https:// |
domain_driven_design.1518699155.txt.gz · Last modified: (external edit)