Learning Resources
This module is populated primarily from the local chunked books in library/raw/semester-07-architecture-ddd/books. External URLs are provided for canonical industry references that the guide cites directly. Use this page as a source map, not as an instruction to read everything.
Source Stack
| Book | Role | How to use it in this module |
|---|---|---|
| Fundamentals of Software Architecture (Richards & Ford) | Primary teaching source | Default escalation for every architecture style in Part II (Chapters 9-18) |
| Clean Architecture (Martin) | Selective support | Package-by-component, boundary discipline, and the dependency rule applied inside any style |
| Just Enough Software Architecture (Fairbanks) | Peripheral framing | Use only if you want an alternate framing of architecture as a risk-reduction activity |
| Learning Domain-Driven Design (Khononov) | Selective support | Used in Cluster 4 for context-to-service mapping; main DDD coverage lives in M03 |
Resource Map by Cluster
Cluster 1: The Layered and Pipeline Patterns
| Need | Best local chunk | Why |
|---|---|---|
| Layered topology and layers of isolation | Richards & Ford: Layered Architecture Style | Canonical introduction; includes the sinkhole anti-pattern |
| Adding layers trade-off | Richards & Ford: Adding Layers | When an additional layer is worth the indirection |
| Layered ratings | Richards & Ford: Layered Ratings | Starting point for style-selection table |
| Pipeline filters | Richards & Ford: Pipeline (Filters) | Filter roles: producer / transformer / tester / sink |
| Pipeline ratings | Richards & Ford: Pipeline Ratings | Comparison input for M01 characteristics |
| Layered-vs-components reframe | Martin: Package by Layer to Ports and Adapters | Alternative decomposition axis |
Cluster 2: Modular Monoliths and Component-Based
| Need | Best local chunk | Why |
|---|---|---|
| Modularity overview | Richards & Ford: Modularity | The measure-first mindset |
| Cohesion and coupling math | Richards & Ford: Measuring Modularity (1) | Cohesion types, coupling counts |
| Abstractness, instability, main sequence | Richards & Ford: Measuring Modularity (2) | Zone of pain / zone of uselessness |
| Connascence taxonomy | Richards & Ford: Connascence | Finer-grained coupling analysis |
| Package by component | Martin: Package by Component | Component-level organization inside a monolith |
| Fitness functions intro | Richards & Ford: Fitness Functions | The enforcement-by-CI idea |
Cluster 3: Service-Based and Event-Driven Styles
| Need | Best local chunk | Why |
|---|---|---|
| Service-based topology | Richards & Ford: Service-Based Topology | Canonical structure |
| Database partitioning in service-based | Richards & Ford: DB Partitioning | How shared DB gets carved up |
| Service-based ratings | Richards & Ford: Service-Based Ratings | Why it scores well on simplicity |
| Event-driven style | Richards & Ford: Event-Driven Style | Topology and tradeoffs overview |
| Mediator topology | Richards & Ford: Mediator | Orchestrator pattern |
| Async capabilities | Richards & Ford: Async Capabilities | Event sourcing, data loss risks |
| Preventing data loss in EDA | Richards & Ford: Preventing Data Loss | Persistence, ack semantics |
| Request-reply over events | Richards & Ford: Request-Reply | Sync-looking interactions on async substrate |
| Space-based style | Richards & Ford: Space-Based Style | In-memory grid approach |
| Data collisions | Richards & Ford: Data Collisions | Conflict resolution in replicated grids |
| Concert ticketing example | Richards & Ford: Concert Ticketing | Worked example |
Cluster 4: Microservices
| Need | Best local chunk | Why |
|---|---|---|
| Microservices history | Richards & Ford: Microservices History | Context and the Lewis/Fowler canonical piece |
| Operational reuse | Richards & Ford: Operational Reuse | Why platform is a prerequisite |
| Communication patterns | Richards & Ford: Communication | Choreography vs orchestration; sagas |
| Microservices ratings | Richards & Ford: Microservices Ratings | Deploy/evolutionary high; performance low |
| Boundary discipline | Martin: Partitioning by Layer vs Use Case | Cross-check on bounded-context sizing |
Cluster 5: Choosing a Style
| Need | Best local chunk | Why |
|---|---|---|
| Style-selection criteria | Richards & Ford: Choosing the Appropriate Style | The canonical style-selection chapter |
| Distributed fallacies | Richards & Ford: Monolithic vs Distributed | The 8 fallacies, in detail |
| Ratings comparison across styles | Various architecture-characteristics-ratings-* chunks above | For the style-comparison table |
External Canonical References
These are industry-standard articles and docs that the guide cites directly. Prefer local chunks for depth; reach for these for canonical framing.
Microservices and Monoliths
- Fowler: Microservices -- the article that popularized the term; still the best single introduction.
- Fowler: MonolithFirst -- the argument for starting with a monolith.
- Fowler: Don't start with a monolith -- Stefan Tilkov's counterpoint, for balance.
- Fowler: MicroservicePremium -- short primer on when microservices pay off.
- Fowler: StranglerFigApplication -- the migration pattern.
- Newman: Monolith Decomposition Patterns -- the talk condensing Monolith to Microservices.
- InfoQ: Decomposing a Monolith Does Not Require Microservices (Newman) -- helpful framing article.
- Microservices.io: Pattern language -- Chris Richardson's pattern catalog.
- Microservices.io: Event-driven architecture -- integration via events.
- Microservices.io: Event sourcing -- for reference when event-driven gets advanced.
Modular Monoliths and Boundary Enforcement
- Shopify: Enforcing Modularity in Rails Apps with Packwerk -- the operational case study.
- ArchUnit User Guide -- Java boundary enforcement.
- Wikipedia: Software package metrics (Ca, Ce, I, A, D) -- short reference for Martin's metrics.
Pipeline and Integration
- Microsoft: Pipes and Filters pattern (Azure Architecture Center) -- cloud-official framing.
- Hohpe & Woolf: Pipes and Filters -- the EIP reference.
Distributed Computing Fallacies
- Wikipedia: Fallacies of distributed computing -- short reference for the 8 fallacies.
- Ably: Navigating the 8 fallacies of distributed computing -- modern commentary with production examples.
Space-Based Architecture
- Wikipedia: Space-based architecture -- short reference; style coined by GigaSpaces.
Use Rules
- If you are stuck on a specific style, go to the matching Richards & Ford chunk first.
- Use
Clean Architectureonly when you need boundary discipline inside a chosen style (works at any granularity). - Use Fowler's articles for canonical framing and to sanity-check strong opinions.
- Use Newman's and Richardson's material when you specifically need decomposition or microservices patterns.
- Do not open a book or article unless you are stuck on a specific question. The concept pages are the main path.