Primarily developed by Rob Sedor, https://github.com/patterncatalyst, this is a hands on workshop about evolving Domain-Driven Design and observability together.
Observability in distributed systems is often treated as an afterthought—something we bolt on once the domain logic is "done." This hands-on session flips that approach by exploring how Domain-Driven Design and observability can evolve together, creating systems that are both well-modeled and deeply transparent.
In this practical workshop, you'll work through a realistic e-commerce scenario where a seemingly simple "checkout" operation spans multiple bounded contexts (Inventory, Payments, Shipping, Notifications). Together, we'll model these contexts, implement key domain events, and then progressively add observability that reflects the domain model—not just the technical infrastructure.
What we'll do:
- Model a multi-context business process using EventStorming techniques
- Design domain events that serve both business logic and observability
- Implement correlation strategies using domain-driven identifiers (not just trace IDs)
- Create structured logs that speak the ubiquitous language
- Build domain-specific metrics that answer business questions like "How many orders are stuck in payment verification?"
- Debug a distributed failure by following domain events across contexts
Workshop Structure:
- Introduction and setup (15 min)
- Collaborative domain modeling session (30 min)
- Hands-on coding: Implementing observable domain events (45 min)
- Debugging exercise: Following a cross-context failure (20 min)
- Group reflection and discussion (15 min)
Technical Details: Participants will work singly or in pairs using provided starter code in either C#, Java, or Python (specify your preference when registering). The exercises focus on domain modeling and event design rather than specific observability tools, though we'll use simple logging frameworks and in-memory event stores. Basic Git and your chosen language skills along with a browser are all that's required.
All code and exercises will be shared in a GitHub repository with clear setup instructions. No prior expertise in observability tools required—just curiosity about connecting domain modeling with operational concerns.
Level of Expertise
Intermediate - Participants should be comfortable writing code in at least one of the supported languages and have basic understanding of DDD concepts (bounded contexts, domain events). Prior experience with distributed systems helpful but not required.
Target Audience
Developers and architects who want practical experience applying DDD principles to observability challenges. Perfect for teams about to embark on distributed system projects or those looking to improve their existing observability strategy through better domain modeling.