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 [2023/11/17 14:52] – [App architecture] skipidar | domain_driven_design [2023/11/21 19:13] (current) – [DDD & Microservices] skipidar | ||
|---|---|---|---|
| Line 7: | Line 7: | ||
| == 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 29: | Line 29: | ||
| |Infrastructure Layer| The persistence logic. | | |Infrastructure Layer| The persistence logic. | | ||
| - | == Scope Hiearchy == | ||
| - | Here is the scope hierarchy within DDD. | ||
| - | < | ||
| - | value < entity < aggregate < module < bounded context | ||
| - | </ | ||
| + | ==== DDD & Microservices ===== | ||
| - | ==== DDD & Microservices ===== | + | === Overview |
| + | DDD has two distinct phases. | ||
| - | == Strategic Design == | + | * 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, value objects, aggregates, and domain services**. | ||
| + | - 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 |< | ||
| + | The purpose of an aggregate is to model **transactional invariants**. Things in the real world have complex webs of relationships. \\ \\ **Example: | ||
| + | </ | ||
| + | |Services|In DDD terminology, | ||
| - | == Tactical Design == | ||
| - | * Entities - are objects with own identifier. | ||
| - | * Value Objects - are identified by their values. Like Address might be one. And re-created rather than copied. | ||
| {{https:// | {{https:// | ||
| - | * Aggregate - The purpose of an aggregate is to model transactional invariants. Things in the real world have complex webs of relationships. \\ \\ **Example: | ||
| + | Overview of the process | ||
| + | |||
| + | {{https:// | ||
| - | ==== App architecture ==== | + | ==== Single micro-service (called " |
| Source: | Source: | ||
domain_driven_design.1700232756.txt.gz · Last modified: by skipidar
