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.

Check our public class schedule for the next scheduled workshop!

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

Prerequisites

Basic to intermediate level experience in…

  • Object-Oriented Programming
  • Database Transactions
  • Functional Programming (optional)

Course Set-up

  • Note-taking document editor
  • Diagramming Tool (optional)
  • IDE/Code editor (optional)

Recommended Preparation

Recommended Follow-up

Schedule

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

Course wrap-up (10 minutes)

Scroll to Top

Join the waitlist for
DDD Aggregates, Domain Events, and Value Objects

Be the first to know when tickets go on sale!