
Domain Driven Design Course
Master Domain-Driven Design and build software that accurately reflects complex business reality. This course takes you from DDD's core philosophy through advanced strategic and tactical patterns, covering aggregates, bounded contexts, domain events, and hexagonal architecture. Whether you're designing greenfield systems or untangling legacy codebases, you'll gain the tools to model domains with precision and confidence.
What you will learn:
You will learn how to apply both strategic and tactical DDD patterns to real software systems. The course covers foundational concepts like ubiquitous language and subdomain decomposition, then moves into building blocks such as entities, value objects, aggregates, repositories, and domain services. You will design bounded contexts, produce context maps, and implement event-driven architectures using domain events and sagas. Advanced topics include CQRS, hexagonal architecture, event sourcing, and migrating legacy systems incrementally. You will also develop practical skills in Event Storming facilitation, domain expert collaboration, and comprehensive DDD testing strategies.
How you study in practice Domain Driven Design Course
How you practise Domain Driven Design Course
For businesses looking to train their team
With Dedika for businesses, the course includes exercises and examples tailored to your own business and the way your company needs.
Course content
8 Chapters • 40 LessonsDuration between 4 and 360 hours (you decide)
Chapter 1HideHide detailsSee detailsFoundations of Domain-Driven Design
Foundations of Domain-Driven Design
Lesson 1 • Domain Experts and Collaboration
Covers techniques for engaging domain experts as active design partners. Students practise knowledge-crunching conversations and structured workshops.
Lesson 2 • DDD Strategic vs. Tactical Patterns
Distinguishes the two pattern families and explains how they complement each other. Sets the learning roadmap for the rest of the course.
Lesson 3 • The Ubiquitous Language Concept
Introduces shared language between developers and domain experts as DDD's foundational practice. Students learn to identify and build a living glossary.
Lesson 4 • Understanding the Domain and Subdomains
Teaches decomposition of a business domain into core, supporting, and generic subdomains. Students apply this to real scenarios to prioritise design investment.
Lesson 5 • What Is Domain-Driven Design
Defines DDD as a software philosophy centred on business domain complexity. Grounds students in the motivation before introducing any tactical patterns.
Chapter 2HideHide detailsSee detailsBuilding Blocks: Entities and Value Objects
Building Blocks: Entities and Value Objects
Lesson 1 • Choosing Between Entities and Value Objects
Provides decision criteria for classifying domain concepts correctly. Students analyse ambiguous cases and justify their modelling choices.
Lesson 2 • Modelling Rich Domain Behaviour
Moves beyond data containers to place business logic inside domain objects. Students implement domain methods that enforce invariants.
Lesson 3 • Practical Implementation Patterns
Translates conceptual models into working code structures. Students apply factory methods, copy constructors, and equality overrides.
Lesson 4 • Entities: Identity and Lifecycle
Defines entities as objects with a continuous identity across state changes. Students learn identity assignment strategies and lifecycle management.
Lesson 5 • Value Objects: Immutability and Equality
Covers value objects as descriptive, side-effect-free domain concepts. Students implement immutability and structural equality in code.
Chapter 3HideHide detailsSee detailsAggregates and Aggregate Roots
Aggregates and Aggregate Roots
Lesson 1 • Aggregate Fundamentals
Defines aggregates as consistency units composed of entities and value objects. Students learn why aggregates exist and what problems they solve.
Lesson 2 • The Aggregate Root Role
Explains the root entity as the sole external access point for an aggregate. Students implement root-controlled access and identity referencing.
Lesson 3 • Aggregate Invariants and Validation
Covers enforcing business rules that span multiple objects within an aggregate. Students write invariant checks triggered by state-changing commands.
Lesson 4 • Cross-Aggregate Communication
Addresses how aggregates interact without violating isolation. Students use domain events and eventual consistency to coordinate across boundaries.
Lesson 5 • Designing Aggregate Boundaries
Teaches heuristics for drawing correct aggregate boundaries. Students avoid overly large aggregates and the concurrency problems they cause.
Chapter 4HideHide detailsSee detailsRepositories, Factories, and Domain Services
Repositories, Factories, and Domain Services
Lesson 1 • Domain Services for Stateless Logic
Identifies operations that belong to no single entity or value object. Students implement domain services that express pure business logic.
Lesson 2 • Factory Pattern in DDD
Explains factories as encapsulators of complex creation logic. Students build factories that enforce invariants during object construction.
Lesson 3 • Repository Implementation Strategies
Covers concrete repository implementations and their trade-offs. Students map aggregate roots to persistence stores without leaking infrastructure into the domain.
Lesson 4 • Integrating the Supporting Patterns
Shows how repositories, factories, and services collaborate in a complete use case. Students trace a command from application layer through domain and back.
Lesson 5 • Repository Pattern Fundamentals
Defines repositories as collection-like abstractions over persistence. Students implement repository interfaces that hide storage technology from the domain.
Chapter 5HideHide detailsSee detailsBounded Contexts and Context Mapping
Bounded Contexts and Context Mapping
Lesson 1 • Context Mapping Patterns
Introduces the full catalogue of context relationship patterns. Students select appropriate patterns based on team dynamics and integration needs.
Lesson 2 • Bounded Context Fundamentals
Defines a bounded context as an explicit boundary within which a model is consistent. Students identify context boundaries in existing systems.
Lesson 3 • Drawing and Documenting Context Maps
Teaches notation and tooling for producing readable context maps. Students create maps that communicate integration contracts to all stakeholders.
Lesson 4 • Anti-Corruption Layer Design
Deep-dives into the ACL as a translation boundary protecting the domain model. Students implement adapters and translators that isolate external model concepts.
Lesson 5 • Team Topologies and Context Ownership
Connects bounded context design to team structure and Conway's Law. Students align context boundaries with team cognitive load and communication paths.
Chapter 6HideHide detailsSee detailsDomain Events and Event-Driven Architecture
Domain Events and Event-Driven Architecture
Lesson 1 • Domain Events as Business Facts
Defines domain events as immutable records of something meaningful that occurred. Students distinguish domain events from technical messages and system notifications.
Lesson 2 • Event Sourcing Introduction
Introduces event sourcing as an alternative persistence strategy driven by domain events. Students evaluate when event sourcing fits and when it adds unnecessary complexity.
Lesson 3 • Eventual Consistency and Saga Patterns
Addresses multi-step business processes that span aggregates and contexts. Students implement choreography-based and orchestration-based sagas.
Lesson 4 • Integrating Events Across Bounded Contexts
Extends domain events to cross-context integration via messaging infrastructure. Students design integration events that respect context autonomy.
Lesson 5 • Raising and Handling Domain Events
Covers the mechanics of publishing events from aggregates and subscribing to them. Students implement in-process event dispatch and handler registration.
Chapter 7HideHide detailsSee detailsApplication Architecture and Layering
Application Architecture and Layering
Lesson 1 • Layered Architecture in DDD
Introduces the classic four-layer DDD architecture and its dependency rules. Students map domain concepts to the correct layer.
Lesson 2 • Infrastructure Concerns and Dependency Inversion
Shows how dependency inversion keeps the domain layer free of infrastructure dependencies. Students wire infrastructure adapters using dependency injection containers.
Lesson 3 • Application Services and Use Cases
Defines application services as orchestrators of domain logic for specific use cases. Students keep application services free of business rules.
Lesson 4 • CQRS Pattern Fundamentals
Introduces Command Query Responsibility Segregation as a complement to DDD. Students separate write models from read models to optimise each independently.
Lesson 5 • Hexagonal Architecture and Ports and Adapters
Presents hexagonal architecture as a modern alternative that enforces domain isolation. Students define ports as interfaces and adapters as infrastructure implementations.
Chapter 8HideHide detailsSee detailsAdvanced DDD: Modelling Complex Domains
Advanced DDD: Modelling Complex Domains
Lesson 1 • Strategic Distillation of the Core Domain
Focuses design investment on the core domain through distillation techniques. Students produce a highlighted core document and a generic subdomain extraction plan.
Lesson 2 • Handling Domain Complexity with Modules
Uses modules to organise large domain models into cohesive, loosely coupled packages. Students apply cohesion and coupling metrics to module design.
Lesson 3 • Supple Design Principles
Covers Evans's supple design patterns for making models intention-revealing and flexible. Students apply intention-revealing interfaces and side-effect-free functions.
Lesson 4 • Modelling Policies and Business Rules
Addresses complex, changeable business rules as explicit domain objects. Students implement the specification and policy patterns to encapsulate rule logic.
Lesson 5 • Refactoring Toward Deeper Insight
Teaches iterative model refinement driven by new domain understanding. Students practise breakthrough refactoring that uncovers hidden domain concepts.
Your valid completion certificate
This course is for you:
Mid-level software developers: ready to move beyond CRUD-focused thinking.
Solutions architects: seeking structured methods for taming business complexity.
Backend engineers: frustrated by codebases that drift away from business intent.
Technical leads: responsible for guiding teams through complex domain modelling decisions.
Software consultants: advising clients on scalable, business-aligned system design.
Career-changers from business analysis: bringing domain knowledge into software design roles.
What our students say
Your lessons are perfect. I purchased the one-year package and finally have the opportunity to follow various topics of interest without needing to change platforms... I'm grateful for everything you do, I've already recommended you to other people...

I like how the lessons are straight to the point and how I can change chapters and skip content I don't need.

I like the content and the way videos are presented and transcribed, which speeds up the process!

The platform is fast and simple to use. The diversity of content and complementary videos really help with learning.

Top qualifications
FAQ
Who is Dedika?
Is the certificate valid in the United Kingdom?
Are the courses free?
What is the course workload?
What are the courses like?
How do the courses work?
What is the duration of the courses?
What is the cost or price of the courses?
What is an EAD or online course and how does it work?
PDF Course




















