Domain Driven Design
Ubiquitous Language
- Common (same) name of entities and processes between specifications and implementation
- Reduces assumptions
- Specification map to implementation
Bounded Contexts / Modules
- Modular design
- Single-purpose
- Module is isolated from other modules
- Well-defined interface
- Messaging and Pub-sub works well for communication between bounded contexts
Aggregate Roots
- Top-level entity that contains other dependent entities
- Top-level entity has globally unique identifier
- Entities inside the aggregate are unique within the aggregate root ( but not globally)
- Can be globally referenced