Skip to main content

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​

  1. Finish the relevant concept page first.
  2. Design one strategic or tactical artifact of your own from memory.
  3. Only then open the matching exercise lane.
  4. 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."

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."

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."

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."

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."

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."

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."

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."

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.