Domain-Driven Design Aggregates, Domain Events, and Value Objects
Learn to use DDD tactical modeling tools supporting a Ubiquitous Language to increase your scale and throughput performance. This course takes a deep dive into the most important patterns, known as Aggregates, Domain Events, and Value Objects. You’ll learn the foundational benefits and constraints of DDD Aggregates to avoid common pitfalls, as well as how to use Domain Events, Event Sourcing for Aggregate persistence, and Event-Driven Architecture. This course also covers how to leverage modeling with whole values, known as Value Objects, to improve design communication among team members and component testability.
What you’ll learn and how you can apply it
By the end of the live online course, you’ll understand:
- The range of DDD tactical modeling tools supporting a Ubiquitous Language, including Aggregates, Domain Events, and Value Objects in depth.
- Effective design of Aggregates reflecting the Ubiquitous Language and guided by the “Rules of Aggregate Design,” as well as testing Aggregates
- Domain Events, Event Sourcing for Aggregate persistence, and Event-Driven Architecture
- Value Objects that reflect the Ubiquitous Language, support immutability with side-effect-free behavior, and how they enhance Aggregate design.
And you’ll be able to:
- Perform domain modeling with DDD tactical patterns to reflect a Ubiquitous Language, in particular Aggregates with Domain Events and the use of Value Objects
- Put DDD Aggregates with a Ubiquitous Language to use by following the “Rules of Aggregate Design,” to test Aggregates, and to apply Domain Events, Event Sourcing for Aggregate persistence, and Event-Driven Architecture
- Design Value Objects to reflect a Ubiquitous Language, modeling whole concepts, and maintaining side-effect-free behavior, while supporting Aggregate inner modeling
This training is for IT professionals in mid-level to senior roles, in particular…
- Software Developers and Engineers
- Software Technical Team Leads
- Software Architects
Basic to intermediate level experience in…
- Object-Oriented Programming
- Database Transactions
- Functional Programming (optional)
- Note-taking document editor
- Diagramming Tool (optional)
- IDE/Code editor (optional)
- Read: Domain-Driven Design Distilled by Vaughn Vernon https://learning.oreilly.com/library/view/domain-driven-design-distilled/9780134434964/
- Watch: Domain-Driven Design Distilled LiveLessons by Vaughn Vernon https://learning.oreilly.com/videos/domain-driven-design-distilled/9780134593449/
The timeframes are only estimates and may vary according to how the class is progressing.
Segment 1: DDD Tactical Modeling (40 minutes)
- Overview of Bounded Context, Ubiquitous Language, and Tactical Tools/Patterns
- Effective Aggregate Design: Applying the Rules
- Modeling Concepts as Value Objects: Power Through Simplicity
- Exercise: Identify a Ubiquitous Language in your domain; recite the Rules of Aggregate Design; explain the advantages of using Value Objects
Break (10 min)
Segment 2: Designing Aggregates and Domain Events (60 minutes)
- Business Invariants and Aggregate Consistency Boundaries
- Designing a Traditional Object-Oriented Aggregate with Commands and Queries
- What Are Domain Events and How Are They Modeled?
- Design Behavior that Emits Domain Events from an Aggregate
- Exercise: Describe business invariants and consistency boundaries; explain how traditional object-oriented Aggregates are designed; design a Domain Event; explain how a Domain Event is emitted from an Aggregate
Break (10 min)
Segment 3: Modeling Value Objects (40 minutes)
- Immutability and Side-Effect-Free Behavior
- Objects with Functions
- Reflecting a Ubiquitous Language as Conceptual Whole Values and Fluent Behavior
- Exercise: Explain immutability, side-effect-free behavior, and functions; explain how to use fluent behavior to express a Ubiquitous Language
(Break (10 min)
Segment 4: Event Sourcing and Event-Driven Architecture (50 minutes)
- What Is Event Sourcing and Why Is It Useful?
- Aggregate Design with Command-Centric Behavior and Event Sourcing
- What Is Event-Driven Architecture?
- Using Domain Events to Support Event-Driven Architecture
- Exercise: Describe Event Sourcing and why it might be useful in certain domains; explain how an – Event Sourced Aggregate is different from a traditional object design; define Event-Driven Architecture and how Domain Events support it