guh.me - gustavo's personal blog

Domain-Driven Design Distilled

Design is inevitable. The alternative to good design is bad design, not no design at all.

Strategic Design

Bounded Context

Core Domain

Domain Experts and Business Drivers

Fundamental Strategic Design

Focus on Business Complexity, Not Technical Complexity

Developing an Ubiquitous Language

Architecture

Strategic Design with Subdomains

Types of Subdomain

Dealing with Complexity

Strategic Design with Context Mapping

Context Mapping

Domain Events

Tactical Design with Aggregates

Aggregates

Rules of Thumb

  1. Protect business invariants inside aggregate boundaries.
  2. Design small aggregates.
  3. Reference other aggregates by identity only.
  4. Update other aggregates using eventual consistency.

Modelling Aggregates

Tactical Design with Domain Events

Designing, Implementing and Using Domain Events

interface DomainEvent {
  Date occurredOn;
}

Event Sourcing

Acceleration and Management Tools

Event Storming