Thursday, December 19, 2013

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