Skip to main content

DDD in Practice

DDD in Practice

Hands-on techniques and patterns to apply DDD in real systems

Overview

This section covers practical, real-world techniques for applying DDD: collaborative workshops that discover domain structure, strategies for decomposing systems into services, integrating legacy systems safely, and aligning architecture with business needs.

Key Techniques

Event Storming

Collaborative workshops with domain experts and developers. Use events to discover domain structure, aggregates, and bounded contexts.

Strategic Decomposition

Break monolithic systems into services aligned with bounded contexts and team ownership.

Legacy Integration

Safely integrate existing systems using anti-corruption layers and context maps.

Microservices Alignment

Map bounded contexts to microservices for team autonomy and scalability.

Model Evolution

Strategies for refactoring and evolving domain models as understanding improves.

When to Use These Techniques

  • Event Storming: Early in projects, when discovering domain with domain experts
  • Strategic Decomposition: Moving from monolith to services
  • Legacy Integration: Integrating old and new systems
  • Microservices Alignment: Planning service boundaries
  • Model Evolution: Ongoing development as domain understanding matures

Implementation Journey

  1. Discover (Event Storming): Understand the domain through collaborative modeling
  2. Partition (Strategic Design): Define bounded contexts and team ownership
  3. Implement (Tactical Design): Build aggregates, entities, services within contexts
  4. Decompose (Services): Align services with contexts
  5. Integrate (ACLs, Events): Manage interaction between contexts
  6. Evolve (Refactoring): Improve models as learning continues

Section Structure

Next Steps

  • Learn Event Storming: Discover domain structure collaboratively
  • Study Microservices Alignment: Decompose and organize services
  • Explore Legacy Integration: Safely integrate existing systems
  • Apply Model Evolution: Keep improving your domain models

References

  • Evans, E. (2003). Domain-Driven Design. Addison-Wesley.
  • Vaughn, V. (2016). Domain-Driven Design Distilled. Addison-Wesley.
  • Vernon, V. (2013). Implementing Domain-Driven Design. Addison-Wesley.