Skip to content

Course Materials for Domain-Driven Design and Event-Driven Microservices Online Class

License

Notifications You must be signed in to change notification settings

ddd-edm-online-course/ddd-edm-course-materials

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Materials for Domain-Driven Design and Event-Driven Microservices Online Course

This class will be offered via O’Reilly’s Live Online Training Platform on a periodic basis. Watch the link for scheduled offerings!

Syllabus

New architectural paradigms like microservices and evolutionary architecture, as well as the challenges associated with managing data and transactional contexts in distributed systems, have generated a renewed interest in disciplined software design and modular decomposition strategies. We know that the secret to obtaining the benefits of these architectures is getting the boundaries right, both at the team and the component/service level, and then keeping them right as the software continues to evolve! A key reason for getting the boundaries right is that it allows us to create a unified and ubiquitous language within the bounded contexts those boundaries enclose, allowing the business and engineers to have productive and coherent conversations.

Fortunately, there is a mature, battle-tested approach to domain modeling and system decomposition that is a perfect compliment to these architectures: Domain-Driven Design (DDD). In this course, we’ll leverage an exemplar business domain, that of a pizza delivery store, to illustrate DDD-based decomposition strategies, data architecture patterns, and implementations.

Prerequisites and Helpful Background:

Setup Instructions:

Foundational Requirements

Your computer should be set up with the following capabilities:

  • Java 11

  • Maven (recent)

  • The IDE/editor you are most comfortable using (make sure you have the Lombok plugin installed! Instructions for Eclipse and IntelliJ are linked).

Free SaaS accounts (optional):

  • It will be helpful to have a (free) Miro account. Alternatively, keep handy a presentation or diagramming tool that you are comfortable using.

Labs

You can download the lab exercises from the following GitHub repo: https://github.com/ddd-edm-online-course/ddd-edm-course-lab-tmpl.

Alternatively, click here to download the repository as a ZIP file: https://github.com/ddd-edm-online-course/ddd-edm-course-lab-tmpl/archive/refs/heads/master.zip.

Schedule:

Day One:

Class Introduction (10 minutes)

  • Intro to the Course

  • Intro to the Instructor

  • Class Logistics

  • Class Outline

Lecture: Why do we need DDD? (15 minutes)

Open Q&A and Class Discussion: Why DDD / Ubiquitous Language (10 minutes)

Break (10 minutes)

Open Q&A and Class Discussion: Strategic Design (10 minutes)

Open Q&A and Class Discussion: Tactical Design (10 minutes)

Lecture: Overview of Event Storming (15 minutes)

Break (10 minutes)

Open Q&A and Class Discussion: Event Storming and Pizza Shop Domain (10 minutes)

Student Activity: Pizza Shop Event Storming exercise (20 minutes)

Interactive Screen Share: Pizza Shop Event Storming solution (15 minutes)

Open Q&A and Class Discussion: Day One AMA (10 minutes)

Day Two:

Day One Recap (10 minutes)

Lecture: DDD and Technical Architectures (25 minutes)

Break (10 minutes)

Interactive Screen Share: Overview of the Pizza Shop Coding Exercise Environment (10 minutes)

Student Activity: Lab 1: TDD Aggregate Root - Create Kitchen Commands with Business Logic and Invariants (10 minutes)

Interactive Screen Share: Lab 1 Solution (15 minutes)

Student Activity: Lab 2: TDD Aggregate Root - Create and Publish Kitchen Domain Events (10 minutes)

Interactive Screen Share: Lab 2 Solution (15 minutes)

Student Activity: Lab 3: TDD Aggregate Repository - Create Kitchen Repositories and Add Domain Events (10 minutes)

Interactive Screen Share: Lab 3 Solution (15 minutes)

Student Activity: Lab 4: TDD Aggregate Repository - Rehydrate Kitchen Aggregates by Reference (10 minutes)

Interactive Screen Share: Lab 4 Solution (15 minutes)

Student Activity: Lab 5: TDD Application Service - Expose Kitchen Business Interface and Implement Transactions (10 minutes)

Interactive Screen Share: Lab 5 Solution (15 minutes)

Student Activity: Lab 6: TDD Policy - Subscribe to a Kitchen Domain Event from within an Aggregate and Create CQRS View (10 minutes)

Interactive Screen Share: Lab 6 Solution (15 minutes)

Student Activity: Lab 7: TDD Policy - Subscribe to a Kitchen Domain Event from an Adjacent Aggregate and Update State (10 minutes)

Interactive Screen Share: Lab 7 Solution (15 minutes)

Open Q&A and Class Discussion: Day Two AMA (10 minutes)

About

Course Materials for Domain-Driven Design and Event-Driven Microservices Online Class

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published