A practical course for senior engineers who lead complex systems. The agenda blends strategic modeling with tactical patterns and shows how to evolve legacy code toward clear bounded contexts. You will align architecture with the domain and deliver change with less risk.
You will model core domains using ubiquitous language and bounded contexts. You will design aggregates, domain services, and events that fit real workflows. You will connect contexts safely and guide teams through evolutionary change from monoliths to services.
• Apply strategic DDD with bounded contexts and context maps
• Design robust aggregates, entities, value objects, and domain services
• Integrate contexts using anti corruption layers, sagas, and contracts
• Evolve legacy systems with modularization, testing, and migration paths
• Senior level experience building and operating production systems
• Familiarity with modular architecture and messaging concepts
*We customize the course outline and content to your specific needs and relevant use cases.
Module 1: Strategic DDD and problem framing
• Ubiquitous language and core domain focus
• Bounded contexts and team aligned boundaries
• Context mapping: partnership, customer supplier, conformist
• Visual collaboration techniques: quick event storming and domain canvases
Module 2: From domain narratives to models
• Commands, policies, and events as storytelling tools
• Capability slices and domain workflows
• Discovering aggregates through invariants and transactional rules
• Aligning models with outcomes and KPIs
Module 3: Tactical building blocks
• Entities and value objects: identity, equality, and immutability
• Aggregates: consistency boundaries and reference patterns
• Domain services: when behavior is not owned by an entity
• Repositories: intent revealing persistence and specs
Module 4: Architecture alignment
• Hexagonal architecture: ports, adapters, and application services
• Application layer vs domain layer responsibilities
• CQRS: where it helps and where it does not
• Event sourcing at a glance: tradeoffs and readiness checks
Module 5: Integrating bounded contexts
• Translation layers and anti corruption layer patterns
• Published language and contracts for interoperability
• Versioning strategies for APIs and messages
• Context mapping to infrastructure choices
Module 6: Process orchestration
• Sagas and process managers modeling long running flows
• Consistency models: eventual, transactional outbox, and idempotency
• Handling duplicates, retries, and timeouts
• Designing for failure and compensations
Module 7: Working with legacy systems
• Domain discovery in a brownfield codebase
• Modular monolith as a stepping stone
• Strangler fig and routing techniques
• Carving out first bounded contexts with minimal risk
Module 8: Data and reporting
• Read models and projections for queries and analytics
• Reporting across contexts without leaking invariants
• Reference data and catalog domains
• Data ownership and synchronization rules
Module 9: Testing the domain model
• Example based specifications and scenario tests
• Property based tests for invariants
• Contract tests between contexts
• Test data strategies for realistic scenarios
Module 10: Operational concerns
• Observability by domain: logs, metrics, and traces
• Resilience patterns: bulkheads, circuit breakers, and backpressure
• Security boundaries and policies by context
• Performance considerations in aggregate design
Module 11: Governance and team practices
• Architecture decision records and model catalogs
• Review rituals: model walkthroughs and context map updates
• Evolution rules: deprecation, versioning, and migration guides
• Aligning product roadmaps to domain change
Module 12: Roadmap to adoption
• Assessing readiness and constraints
• Selecting pilot slices and success criteria
• Change management for developers and stakeholders
• Building a shared language glossary and living documentation
Hands-on learning with expert instructors at your location for organizations.
Master new skills guided by experienced instructors from anywhere.