Skip to main content

Learning Resources

This module is populated from the local chunked books in library/raw/semester-07-architecture-ddd/books and a small set of vetted external references. Use this page as a source map, not as an instruction to read everything.

Source Stack

BookRoleHow to use it in this module
Learning Domain-Driven Design (Vlad Khononov, 2021)Primary teaching sourceDefault escalation for every strategic and tactical concept in this module
Fundamentals of Software Architecture (Richards & Ford)Selective supportService boundaries, event-driven architecture style, monolith vs distributed trade-offs
Clean Architecture (Robert C. Martin)Selective supportBoundary discipline between layers; component principles for applying aggregates/repositories
API Design Patterns (JJ Geewax)Optional cross-referencePublished-language contracts and cross-context integration
Just Enough Software Architecture (Fairbanks)PeripheralArchitecture description vocabulary

Resource Map by Cluster

Cluster 1: Strategic Design Foundations

NeedBest local chunkWhy
business domain vs subdomainKhononov: What is a business domain, types of subdomainsOpens the three-level split
comparing subdomainsKhononov: Comparing subdomainsCore / supporting / generic distinctions with examples
identifying subdomain boundariesKhononov: Identifying subdomain boundaries to GigmasterHow boundaries are discovered in practice
BusVNext case studyKhononov: BusVNext to ExercisesFirst worked example of strategic classification
business problem scenariosKhononov: Business problems to scenariosStrategic prompts to practice on
ubiquitous language, consistency, toolsKhononov: Consistency to toolsThe language discipline Cluster 1 concept 3 rests on
language challengesKhononov: Challenges to exercisesWhen language discipline breaks
inconsistent models -> scope of a bounded contextKhononov: Inconsistent models to scopeBridges Cluster 1 concept 3 into Cluster 2
bounded contexts vs subdomainsKhononov: Bounded contexts vs subdomains to scienceClears up the common confusion
refrigerator-buying metaphorKhononov: Buying a refrigerator to exercisesMemorable illustration of context-specific language

Cluster 2: Context Mapping

NeedBest local chunkWhy
cooperation -> conformistKhononov: Cooperation to conformistPartnership, Shared Kernel, Customer-Supplier, Conformist
ACL, OHS, Published Language, Separate WaysKhononov: Anticorruption layer to exercisesThe translation patterns
model translation mechanicsKhononov: Model translation to stateful model translationDeeper look at how ACLs and OHS are implemented
customer-supplier mechanicsKhononov: Customer-supplier to separateExtra detail on customer-supplier and separate ways

Cluster 3: Discovering the Domain

NeedBest local chunkWhy
what EventStorming is, steps 1-6Khononov: What is EventStorming to step 6 policiesThe workshop format
steps 7+ and wrap-upKhononov: Step 7 read models to exercisesRead models, aggregates, hot-spots
strategic analysis and modernizationKhononov: Strategic analysis to modernization strategyFinding boundaries in legacy systems
strategic modernization and pragmatic DDDKhononov: Strategic modernization to pragmatic DDDPragmatic notes on evolving boundaries
evolving boundariesKhononov: Changes in domains to tactical design concernsSubdomain reclassification, context evolution

Cluster 4: Tactical Building Blocks

NeedBest local chunkWhy
building blocks overviewKhononov: History to building blocks part 1Entities, VOs
building blocks part 2Khononov: Building blocks part 2Aggregates, invariants
building blocks part 3Khononov: Building blocks part 3Domain events, repositories
building blocks part 4Khononov: Building blocks part 4 to exercisesFactories, application layer
business logic vs architectural patternsKhononov: Business logic vs architectural patternsWhere logic belongs, not where frameworks put it
layered architecture for DDDKhononov: When to use layered architecture to implementationApplication/domain/infrastructure layering
projecting read modelsKhononov: Projecting read models to exercisesBridge from aggregates to CQRS in Cluster 5
integrating aggregates and outboxKhononov: Integrating aggregates and outboxDomain-events-across-aggregates mechanics
saga coordinationKhononov: Saga to exercisesCoordinating multi-aggregate operations

Cluster 5: DDD in Practice

NeedBest local chunkWhy
event sourcing foundationsKhononov: Event sourcingWhat ES is
event-sourced domain modelKhononov: Search to event-sourced domain modelHow it plays with aggregates
advantages and trade-offsKhononov: Advantages to exercisesDecision framing for ES
event-driven architecture structureKhononov: Event-driven architecture to structureContext-level event architecture
types of eventsKhononov: Types of events to distributed big ball of mudDomain vs integration vs event-carried state transfer
temporal couplingKhononov: Temporal coupling to exercisesWhy raw domain events shouldn't cross contexts
analytical vs transactional dataKhononov: Analytical data model vs transactional data modelData-mesh-adjacent framing of CQRS
data warehouse to data meshKhononov: Data warehouse to data meshBounded-context-aware analytics
decompose data around domainsKhononov: Decompose data around domains to exercisesData ownership across contexts
microservices as deep servicesKhononov: Microservices as deep services to aggregatesArchitecture-to-context alignment
services and system complexityKhononov: What is a service to system complexityServices and their boundaries

Canonical External References

Visit these occasionally for vocabulary, deeper examples, and community heuristics.

Primary sites

Adjacent / practice

Books (beyond what's in the local stack)

  • Implementing Domain-Driven Design (Vaughn Vernon, 2013) -- for deep tactical practice with aggregates, repositories, and domain events.
  • Domain-Driven Design: Tackling Complexity in the Heart of Software (Eric Evans, 2003) -- "the blue book"; the original.
  • Domain-Driven Design Distilled (Vaughn Vernon, 2016) -- concise strategic overview.
  • Monolith to Microservices (Sam Newman, 2019) -- pairs well with Cluster 5 alignment decisions.
  • Designing Data-Intensive Applications (Martin Kleppmann, 2017) -- necessary background for CQRS and event sourcing.

Videos

How To Use This Page

  • For a single concept: find its cluster table, pick one chunk, stop there.
  • For a cluster: read the 3-5 chunks mapped to it, then do the cluster practice page.
  • For the whole module: do not read front-to-back; follow the module's suggested weekly flow, pulling chunks as needed.
  • Keep a 1-line note per chunk ("what I learned, what I will try") -- your future self is the primary consumer of this log.