Domain-Driven Design Fundamentals
This course will teach you the fundamentals of Domain- Driven Design (DDD) through a demonstration of customer interactions and a complex demo application, along with advice from renowned DDD experts.
What you'll learn
In this course, Domain-Driven Design Fundamentals, you’ll learn the key concepts and means to implement DDD. First, you’ll explore how to model a software problem. Next, you’ll discover the elements of DDD. Finally, you’ll learn how to leverage DDD in a sample software application. When you’re finished with this course, you’ll have the skills and knowledge of Domain-Driven Design needed to unravel the complexity of your domain, build smarter software and gain an even deeper understanding of DDD.
Table of contents
- Introduction and Overview 1m
- What to Expect from This Course and This Module 2m
- Understanding the Value of Domain-Driven Design 3m
- Gaining a High-level Understanding of DDD 3m
- Exploring the Benefits and Potential Drawbacks of DDD 4m
- Inspecting a Mind Map of Domain-Driven Design 3m
- Introducing Our Sample Application 3m
- Exploring the Sample App's High-level Structure 4m
- Review and Resources 2m
- Introduction and Overview 1m
- Introducing Our Domain 1m
- Planning Ahead to Learn About the Domain 1m
- Conversation with a Domain Expert: Exploring the Domain and Its Subdomains 3m
- Conversation with a Domain Expert: Exploring the Scheduling Subdomain 5m
- Reviewing Key Takeaways from Meeting with Domain Expert(s) 2m
- Taking a First Pass at Modeling our Subdomain 1m
- Using Bounded Contexts to Untangle Concepts that Appear to Be Shared 5m
- Conversation with Eric Evans on Subdomains and Bounded Contexts 1m
- Introducing Context Maps 5m
- Addressing the Question of Separate Databases per Bounded Context 1m
- Specifying Bounded Contexts in our Application 2m
- Understanding the Ubiquitous Language of a Bounded Context 4m
- Conversation with a Domain Expert: Working on our Ubiquitous Language 6m
- Reviewing Important Concepts from This Module 5m
- Review and Resources 1m
- Introduction and Overview 2m
- The Importance of Understanding DDD Terms 2m
- Focusing on the Domain 3m
- Identifying Events Leads to Understanding Behaviors 2m
- Comparing Anemic and Rich Domain Models 3m
- Understanding Entities 2m
- Differentiating CRUD from Complex Problems that Benefit from DDD 1m
- Switching Between Contexts in a UI 4m
- Using GUIDs or Ints for Identity Values 3m
- Talking with Eric Evans About the Responsibility of Entities 1m
- Implementing Entities in Code 6m
- Synchronizing Data Across Bounded Contexts 2m
- Review and Resources 2m
- Introduction and Overview 1m
- Tackling Data Complexity 2m
- Introducing Aggregates and Aggregate Roots 3m
- Considering Associations in Aggregates 6m
- Handling Relationships that Span Aggregates 2m
- Evolving the Appointments Aggregate 2m
- Using Invariants to Better Understand Our Aggregate 2m
- Modeling Breakthroughs and Refactoring 1m
- Recognizing Signs of a Misidentified Aggregate 3m
- Considering Schedule as Our New Aggregate 2m
- Exploring the Schedule Aggregate in Our Application 8m
- Sharing Our Tips for Aggregate Design 1m
- Review and Resources 2m
- Introduction and Overview 1m
- Introducing Repositories 4m
- Repository Benefits 1m
- Repository Tips 3m
- Avoiding Repository Blunders 3m
- Addressing the Debates Around Using Repositories 5m
- Returning IQueryables: Pros and Cons 7m
- Considering Generic Repositories and Interfaces 5m
- Exploring Repositories in our Application 7m
- Introducing the Specification Pattern 6m
- Using Specifications with Repositories in Our App 6m
- Review and Resources 3m
- Introduction and Overview 1m
- Reviewing Our Current System Design 2m
- Addressing a New Feature with the Domain Expert 2m
- Planning Our Implementation Steps 1m
- Introducing Message Queues 3m
- Sending a Message to the Queue 3m
- Reading From the Message Queue and Acting on the Message 4m
- Using Multiple Queues to Handle Various Communications 3m
- Debugging to See the Detailed Implementation in Code 7m
- Considering Microservices 4m
- Sharing Some Tips for Extending and Running the Sample Application 2m
- Considering the UI in the Domain Design 3m
- Modeling with Event Storming and Other Techniques 2m
- Eric Evans on the Fallacy of Perfectionism 1m
- Lessons Learned Since Our 2014 Course 5m
- Review and Resources 3m