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.
Targeted boundary resources
Use Import Linter forbidden contracts to distinguish direct from indirect restrictions, or ArchUnit for Java architecture checks. Select the tool for your implementation stack; do not install both merely to complete the graph lab. Apply one documented rule to a real forbidden dependency and preserve its failure output.