Reference and Selective Reading
You do not need to read the source books front-to-back for this module. Use the concept pages and practice pages first. Open these local chunks only when you need alternate exposition, more worked examples, or a deeper reference lane.
Source Roles
| Source | Role | Why it is here |
|---|---|---|
| Building Microservices (Sam Newman, 2nd ed.) | Primary teaching source | Best overall arc for the style, decomposition, contracts, and operations |
| Microservices Patterns (Chris Richardson) | Primary teaching source | Best pattern catalog; site is microservices.io |
| Fundamentals of Software Architecture (Richards & Ford) | Selective support -- local chunks available | Architecture-style framing, modularity, connascence, event-driven style, team practices |
| System Design Primer | Selective support -- local chunks available | Short reinforcements for communication, async, discovery, availability |
| Team Topologies (Skelton & Pais) | Organizational context | Concept 15 and the organizational side of migrations |
| Release It! (Michael Nygard) | Resilience canon | Depth on timeouts, retries, circuit breakers, bulkheads |
Read Only If Stuck
When and Why Microservices
- Fundamentals of Software Architecture: Monolithic vs Distributed Architectures
- Fundamentals of Software Architecture: Architecture Styles
- Fundamentals of Software Architecture: Modularity
- Fundamentals of Software Architecture: Component-Based Thinking
- System Design Primer: Application Layer, Microservices, and Service Discovery
Finding Service Boundaries
- Fundamentals of Software Architecture: Have Business Domain Knowledge
- Fundamentals of Software Architecture: Discovering Components
- Fundamentals of Software Architecture: Connascence
- Fundamentals of Software Architecture: Analyzing Trade-offs
- Cross-reference: S7 M3 (Domain-Driven Design & Bounded Contexts) -- entire module.
Data Ownership and Contracts
- System Design Primer: RPC and REST
- System Design Primer: Asynchronism
- System Design Primer: Database federation and sharding
- System Design Primer: RDBMS and Replication
- Fundamentals of Software Architecture: Communication
- Fundamentals of Software Architecture: Database Partitioning
- Fundamentals of Software Architecture: Unit and Functional Testing Checklist
- Fundamentals of Software Architecture: Fitness Functions
Service Communication
- System Design Primer: Communication HTTP
- System Design Primer: Communication TCP/UDP
- System Design Primer: Load Balancer
- System Design Primer: Reverse Proxy
- System Design Primer: Availability Patterns
- Fundamentals of Software Architecture: Event-Driven Architecture Style
- Fundamentals of Software Architecture: Request-Reply
- Fundamentals of Software Architecture: Asynchronous Capabilities
- Fundamentals of Software Architecture: Preventing Data Loss
Operating Microservices
- Fundamentals of Software Architecture: Operations / DevOps
- Fundamentals of Software Architecture: Engineering Practices
- Fundamentals of Software Architecture: Measuring Architecture Characteristics
- Fundamentals of Software Architecture: Making Teams Effective
- Fundamentals of Software Architecture: Team Warning Signs
- Fundamentals of Software Architecture: Integrating with the Development Team
- Fundamentals of Software Architecture: The Software Architect as a Leader
Optional Deep Dive (Local Chunks Worth Opening Only With Purpose)
- System Design Primer: Real-World Architectures -- case studies; pick one after a decomposition exercise to compare.
- Fundamentals of Software Architecture: Architecture Decisions -- needed when you write the "microservices vs monolith" ADR.
- Fundamentals of Software Architecture: Architecture Decision Records -- ADR template specifically.
- Fundamentals of Software Architecture: Risk Matrix -- for the cost-model write-up.
- Fundamentals of Software Architecture: Choosing the Appropriate Architecture Style -- useful when the cost model says "probably not microservices".
- Fundamentals of Software Architecture: Diagramming and Presenting Architecture -- for the decomposition memo diagrams.
Concept-to-Source Map
| Primary concept | Best local source if stuck | Why this source |
|---|---|---|
| The microservices distillation | system-design-primer: Application Layer | Shortest canonical definition |
| Why not microservices | FoSA: Monolithic vs Distributed | Contains the cost/tradeoff treatment |
| Monolith-first and strangler-fig | FoSA: Modularity + FoSA: Component-Based Thinking | Modular monolith is the "from"; components are the seams |
| Bounded contexts as service boundaries | S7 M3 (Bounded Contexts module) | Entire prior module is the primary source |
| Decomposition heuristics | FoSA: Discovering Components | Discovery-by-capability framing |
| Distributed-monolith and entity-service | FoSA: Connascence | Precise vocabulary for why these fail |
| Database-per-service | system-design-primer: Federation/sharding | Physical analogue of ownership |
| Service contracts | system-design-primer: RPC and REST + system-design-primer: Asynchronism | Both shapes in one place |
| Consumer-driven contract testing | FoSA: Fitness Functions | CDC is a specific fitness function |
| Sync vs async | FoSA: Event-Driven Style + FoSA: Request-Reply | Balanced coverage of both |
| Discovery, gateways, BFF | system-design-primer: Application Layer | Discovery section + BFF is web-article-only |
| Resilience primitives | system-design-primer: Availability Patterns | Availability vocabulary foundation |
| Distributed tracing | FoSA: Measuring Architecture Characteristics | Measurement framing; concrete tracing is OTel docs |
| Deployment independence | FoSA: Engineering Practices + FoSA: Fitness Functions | Compatibility enforced as a fitness function |
| Team topology | FoSA: Making Teams Effective | Closest local coverage; Team Topologies book is primary |