Book Exercise Lanes
This module's exercise system is book-driven. Use these local chunks for targeted volume after you have already learned the concept from the guide and worked the practice pages. Each lane has a focused question and a short set of chunks -- pick the lane that matches the weakness you want to reduce.
How To Use This Page
- Finish the relevant concept page first.
- Design one strategic or tactical artifact of your own from memory.
- Only then open the matching exercise lane.
- Keep a mistake log with tags such as
one-service-per-noun,shared-DB-across-contexts,aggregate-too-big,domain-event-published-raw,ACL-doing-business-logic,conformist-where-ACL-was-needed,event-sourcing-forced,subdomain-misclassified.
Lane 1: Strategic Design -- Subdomains and Classification
Use this lane when the issue is "I cannot pick core / supporting / generic, or I cannot distinguish domain from subdomain from bounded context."
- Khononov: What is a business domain to types of subdomains
- Khononov: Comparing subdomains
- Khononov: Identifying subdomain boundaries to Gigmaster
- Khononov: BusVNext to exercises
- Khononov: Business problems to scenarios
Target outcomes:
- 3 complete subdomain inventories for unfamiliar businesses (e.g., telemedicine, grocery delivery, B2B SaaS procurement)
- 6 correct classifications with heuristic citations
- 2 "wrong classification fixed" case studies against existing services
- 1 written disambiguation of domain vs subdomain vs context you can hand a new engineer
Lane 2: Ubiquitous Language and Context Boundaries
Use this lane when the issue is "I cannot articulate why these two contexts are different, or I keep writing one model for everyone."
- Khononov: Consistency to tools
- Khononov: Challenges to exercises
- Khononov: Inconsistent models to scope of a bounded context
- Khononov: Bounded contexts versus subdomains to science
- Khononov: Buying a refrigerator to exercises
Target outcomes:
- 4 glossary entries for the same term (e.g.,
customer) in 4 different contexts - 3 context boundary decisions with explicit language-heuristic arguments
- 2 "merged by mistake" audits of real systems where one model spans contexts
Lane 3: Context Mapping -- Relationship Patterns and Translation
Use this lane when the issue is "I cannot name the relationship on an edge, or I confuse ACL with OHS."
- Khononov: Cooperation to conformist
- Khononov: Anticorruption layer to exercises
- Khononov: Model translation to stateful model translation
- Khononov: Customer-supplier to separate
Target outcomes:
- 2 full context maps with every edge labeled by pattern
- 3 decisions to upgrade conformist -> ACL with reasoning
- 2 published-language designs (schema + vocabulary + reserved fields)
- 1 "distributed-monolith rescue" plan
Lane 4: EventStorming -- Workshop Discipline
Use this lane when the issue is "my EventStorming sessions produce pretty boards but no insights."
- Khononov: What is EventStorming to step 6 policies
- Khononov: Step 7 read models to exercises
- Khononov: Strategic analysis to modernization strategy
- Khononov: Domain knowledge to exercises
Target outcomes:
- 3 full process-level EventStorming outputs for three different business flows
- 1 design-level EventStorming producing 2-3 aggregates
- 1 written session retrospective identifying what went wrong and how to fix next time
- 5 red hot-spots captured as open questions (and resolved or scheduled)
Lane 5: Tactical -- Aggregates, Entities, Value Objects
Use this lane when the issue is "my aggregates are too big, invariants leak, or my VOs are just DTOs."
- Khononov: History to building blocks part 1
- Khononov: Building blocks part 2
- Khononov: Building blocks part 3
- Khononov: Building blocks part 4 to exercises
- Khononov: Business logic vs architectural patterns
- Khononov: When to use layered architecture to implementation
Target outcomes:
- 4 aggregates implemented in code with numbered invariants and tests
- 6 value objects with constructor-enforced invariants
- 2 "aggregate was too big, split it" before-and-after refactors
- 2 domain services extracted from over-stuffed handlers
Lane 6: Domain Events, Outbox, Coordination
Use this lane when the issue is "events, outbox, saga coordination feel vague."
- Khononov: Integrating aggregates and outbox
- Khononov: Saga to exercises
- Khononov: Event-driven architecture to structure
- Khononov: Types of events to distributed big ball of mud
- Khononov: Temporal coupling to exercises
Target outcomes:
- 4 domain events with internal + integration schemas and explicit field drops/renames
- 2 outbox implementations (SQL or your preferred store) with idempotent consumers
- 1 saga / process manager for a multi-aggregate flow (e.g., book + inventory + payment)
- 2 "raw domain event leaked" bugs written up as anti-patterns
Lane 7: CQRS and Event Sourcing
Use this lane when the issue is "I can't decide if CQRS or ES is justified, or I've been asked to adopt them without a reason."
- Khononov: Event sourcing
- Khononov: Search to event-sourced domain model
- Khononov: Advantages to exercises
- Khononov: Projecting read models to exercises
- Khononov: Analytical vs transactional data model
Target outcomes:
- 3 CQRS decisions for different contexts, two "yes" and one "no" with defense
- 2 event-sourced aggregate sketches (fold, snapshot strategy, event-versioning plan)
- 1 decision memo: "we chose ES for this context because…" or "we rejected ES here because…"
- 1 schema-evolution scenario (add a field, rename a field) handled via upcasters
Lane 8: Alignment and Evolution
Use this lane when the issue is "we have services but not contexts, or contexts but not teams."
- Khononov: What is a service to system complexity
- Khononov: Microservices as deep services to aggregates
- Khononov: Subdomains to exercises (reclassification over time)
- Khononov: Changes in domains to tactical design concerns
- Khononov: Strategic modernization to pragmatic DDD
- Khononov: Appendix A -- Applying DDD case study
Target outcomes:
- 2 alignment tables (context -> team -> service -> DB) with explicit rationales
- 1 extraction plan (strangler-fig style) for a super-context, with ADR sketch
- 1 "merge" decision for two contexts that stepped on each other
- 1 context-map diff (year N vs year N+2) with the list of changes and why
Mistake Log Template
Keep a small log like this as you work the lanes:
date | lane | mistake tag | what I wrote | what I should have written
-----+------+----------------------------+---------------------------+---------------------------------
04-05| 3 | ACL-doing-business-logic | rule logic inside ACL | rule logic in domain service
04-07| 5 | aggregate-too-big | Customer + Orders + ... | Customer, Order separate by ID
04-09| 1 | core-vs-supporting | check-in labeled core | supporting until market proves otherwise
After 4 weeks, your log tells you which concepts deserve re-reading in depth.