The first 400 students can use code TRANSIT20 to get 20% off our new "From Zero to Hero: Messaging in .NET" course!

Deep Dive: Domain-Driven Design

Dive deeper into your Domain-Driven Design journey

Domain-driven design (or DDD for short) is one of the most popular software design approaches and for excellent reason. It allows us to build highly maintainable systems using domain-specific expertise and base our implementation on well-developed models using ubiquitous language. In this course, Amichai Mantinband will expand on his existing Getting Started course knowledge and dive deeper into advanced DDD concepts such as event storming, sub-domains, bounded contexts, context mapping, aggregate design and more. Join Amichai in this 6-hour course and get ahead of the curve on your DDD journey.

Curriculum

Welcome

2:40

What will you learn in this course?

2:07

Who is the course for and prerequisites

2:31

Designing Systems Following Domain-Driven Design

2:06

Key Strategic and Tactical Practices

3:49

Domain Discovery

4:50

Domain Discovery Techniques

1:57

Event Storming Sneak Peek

4:29

Documenting Ubiquitous Language

1:12

Documenting Invariants

3:19

Section Recap

2:32

What is Event Storming?

1:10

Event Storming Legend

5:56

Types of Event Storming

2:04

Big Picture Event Storming

2:02

Gym Session Scheduling System Domain Overview

5:43

Big Picture Event Storming In Action - Setup

10:41

Round 1 - Chaotic Exploration

4:05

Round 2 - Enforce the Timeline

6:01

Round 3 - People & Systems

2:23

Round 4 - Walkthrough & Reverse Narrative

1:31

Round 5 - Arrow Voting

8:08

Big Picture Event Storming Goals

3:44

Section Recap

2:32

What is Process Modeling Event Storming?

8:11

Process Modeling - The Rules of the Game

2:27

Process Modeling in Action - Setup

4:16

Round 1 - Framing the Problem

3:25

Round 2 - Rush to the Goal

1:28

Round 3 - Fill in the Blanks

3:07

Process Modeling Event Storming Goals

5:22

Section Recap

1:18

Refresher - What are Domains & Sub-Domains

1:51

Identifying Sub-Domains

1:47

Classifying Sub-Domains

7:00

Section Recap

2:53

Refresher - What are Bounded Contexts

5:29

Reviewing Our Ubiquitous Language

5:23

Reviewing Our Invariants

5:18

Reviewing Our Sub-Domains

13:24

How Bounded Contexts Affect Domain Models

15:59

Defining Bounded Contexts

5:10

Defining Our Bounded Contexts

4:28

Section Recap

1:29

Refresher - What is Context Mapping

2:09

Team Relationships

2:00

Context Map Patterns

13:24

Context Mapping In Action - Setup & Context

8:22

Creating an Admin Profile

1:13

Creating a Subscription

1:00

Creating a Gym

4:56

Creating a Room

8:34

Creating a Session

3:09

Creating a Participant Profile

1:29

Reserving a Spot in a Session

6:59

Context Mapping In Action - Conclusion

4:28

Strategic Goals Alignment

2:38

Section Recap

3:46

Refresher - What is the Tactical Phase

1:56

Refresher - Tactical Patterns

3:45

Tactical Phase Objectives

6:34

Section Recap

0:34

Enforce Invariants

2:53

Reference Aggregates By Id

1:21

Update Aggregate via Aggregate Root

1:04

Prefer Smaller Aggregates

1:11

One Aggregate Per Transaction

2:36

Use Eventual Consistency Outside the Boundary

0:37

Maintain Aggregate Scope

3:57

Aggregate Root Identity Uniqueness

10:45

Private > Public

3:36

Assess and Refactor

8:58

Aggregate Design Steps

2:21

Aggregate Design In Action - Step 1

2:35

Aggregate Design In Action - Step 2

2:32

Aggregate Design In Action - Step 3

3:09

Aggregate Design In Action - Step 4 Setup

1:35

Merging Aggregates in the User Management Context

7:20

Merging Aggregates in the Gym Management Context

3:47

Merging Aggregates in the Session Management Context - The Chain Effect of Merging Aggregates

0:32

Merging Aggregates in the Session Management Context - Identifying Missing Domain Objects

0:46

Merging Aggregates in the Session Management Context Continued

0:21

Merging Aggregates in the Session Management Context - Propagating Data Across Bounded Contexts

6:06

Merging Aggregates Across Bounded Contexts

0:19

Merging Aggregates in the Session Management Context - Continued

0:14

Aggregate Design Draft Reflection

1:44

Merging Aggregates Based On Eventual Consistency Constraints

1:59

Evolving Aggregate Design With Time or Refactoring Existing Aggregate Designs

2:56

Converting Aggregate Design To Code

0:30

Section Recap

0:18

Course Conclusion

0:36

Course Info

Level:
Deep Dive
Duration:
5h 41m

Lifetime access

Buy Course Add to Cart
Dometrain Pro

Want access to all of our courses? Subscribe to Dometrain Pro!

Subscribe to Pro

About the Author

author_img

Amichai Mantinband

Amichai Mantinband is a Software Engineer at Microsoft and a .NET content creator.
He works on large-scale, distributed systems within Microsoft Office, serving over 100 million daily users. He is a speaker at official .NET conferences, and within Microsoft, he authors and teaches software architecture courses.
Amichai is the author of NuGet packages ErrorOr & Throw and has a .NET programming YouTube channel covering advanced topics such as design patterns, architecture, and best practices.

More courses by Amichai Mantinband