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.
Welcome
What will you learn in this course?
Who is the course for and prerequisites
Designing Systems Following Domain-Driven Design
Key Strategic and Tactical Practices
Domain Discovery
Domain Discovery Techniques
Event Storming Sneak Peek
Documenting Ubiquitous Language
Documenting Invariants
Section Recap
What is Event Storming?
Event Storming Legend
Types of Event Storming
Big Picture Event Storming
Gym Session Scheduling System Domain Overview
Big Picture Event Storming In Action - Setup
Round 1 - Chaotic Exploration
Round 2 - Enforce the Timeline
Round 3 - People & Systems
Round 4 - Walkthrough & Reverse Narrative
Round 5 - Arrow Voting
Big Picture Event Storming Goals
Section Recap
What is Process Modeling Event Storming?
Process Modeling - The Rules of the Game
Process Modeling in Action - Setup
Round 1 - Framing the Problem
Round 2 - Rush to the Goal
Round 3 - Fill in the Blanks
Process Modeling Event Storming Goals
Section Recap
Refresher - What are Domains & Sub-Domains
Identifying Sub-Domains
Classifying Sub-Domains
Section Recap
Refresher - What are Bounded Contexts
Reviewing Our Ubiquitous Language
Reviewing Our Invariants
Reviewing Our Sub-Domains
How Bounded Contexts Affect Domain Models
Defining Bounded Contexts
Defining Our Bounded Contexts
Section Recap
Refresher - What is Context Mapping
Team Relationships
Context Map Patterns
Context Mapping In Action - Setup & Context
Creating an Admin Profile
Creating a Subscription
Creating a Gym
Creating a Room
Creating a Session
Creating a Participant Profile
Reserving a Spot in a Session
Context Mapping In Action - Conclusion
Strategic Goals Alignment
Section Recap
Refresher - What is the Tactical Phase
Refresher - Tactical Patterns
Tactical Phase Objectives
Section Recap
Enforce Invariants
Reference Aggregates By Id
Update Aggregate via Aggregate Root
Prefer Smaller Aggregates
One Aggregate Per Transaction
Use Eventual Consistency Outside the Boundary
Maintain Aggregate Scope
Aggregate Root Identity Uniqueness
Private > Public
Assess and Refactor
Aggregate Design Steps
Aggregate Design In Action - Step 1
Aggregate Design In Action - Step 2
Aggregate Design In Action - Step 3
Aggregate Design In Action - Step 4 Setup
Merging Aggregates in the User Management Context
Merging Aggregates in the Gym Management Context
Merging Aggregates in the Session Management Context - The Chain Effect of Merging Aggregates
Merging Aggregates in the Session Management Context - Identifying Missing Domain Objects
Merging Aggregates in the Session Management Context Continued
Merging Aggregates in the Session Management Context - Propagating Data Across Bounded Contexts
Merging Aggregates Across Bounded Contexts
Merging Aggregates in the Session Management Context - Continued
Aggregate Design Draft Reflection
Merging Aggregates Based On Eventual Consistency Constraints
Evolving Aggregate Design With Time or Refactoring Existing Aggregate Designs
Converting Aggregate Design To Code
Section Recap
Course Conclusion
Course Info
Lifetime access
Add to Cart
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.
© 2023 Dometrain. All rights reserved.