Domain-Driven Design¶
Strategisches und taktisches DDD fuer komplexe Softwaresysteme — Bounded Contexts, Aggregates und Domain Events.
Strategisches Design¶
Bounded Contexts¶
Klar abgegrenzte Modelle mit eigener Ubiquitous Language:
graph LR
A[Order Context] -->|Event| B[Payment Context]
A -->|Event| C[Shipping Context]
B -->|Event| C
D[Customer Context] --> A
D --> B
Context Mapping¶
| Pattern | Beschreibung |
|---|---|
| Shared Kernel | Gemeinsamer Code zwischen Contexts |
| Customer/Supplier | Upstream liefert, Downstream konsumiert |
| Anti-Corruption Layer | Uebersetzungsschicht gegen fremde Modelle |
| Open Host Service | Oeffentliche API mit Published Language |
Taktisches Design¶
Building Blocks¶
| Block | Zweck |
|---|---|
| Entity | Identitaet ueber Zeit, veraenderbar |
| Value Object | Wertgleichheit, unveraenderlich |
| Aggregate | Konsistenzgrenze, Root Entity |
| Domain Event | Fachliches Ereignis, unveraenderlich |
| Repository | Persistent-Abstraktion fuer Aggregates |
| Domain Service | Logik die keiner Entity gehoert |
Aggregate-Regeln¶
- Kleinstmoegliche Aggregates
- Referenzen zwischen Aggregates nur ueber ID
- Konsistenz innerhalb, Eventual Consistency zwischen Aggregates
- Aenderungen ueber die Aggregate Root
Verwandte Skills¶
- Microservices — Service-Schnitt mit Bounded Contexts
- Architecture Planning — Architekturplanung
Quelldatei: skills/architecture/domain-driven-design.md