← experimental
Contents
  1. At-a-Glance Ratings
  2. Key Dimensions
  3. Monolith vs Distributed
  4. Technical vs Domain Partitioning
  5. Architecture Quanta Count
  6. Decision Guide
  7. The 8 Fallacies of Distributed Computing
  8. Stamp Coupling (Distributed Styles Only)
  9. Style Evolution Paths
  10. Open Questions

For navigation and high-level descriptions of each style, see Architecture Styles.

Ratings are qualitative (★☆☆☆☆ to ★★★★★) based on Richards & Ford's scorecards in Fundamentals Of Software Architecture, Ch 10–17. These reflect the inherent tendencies of each style — individual implementations can deviate based on design choices.

At-a-Glance Ratings

Characteristic Layered Pipeline Microkernel Svc-Based Event-Driven Space-Based SOA Microservices
Deployability ★★ ★★★ ★★★★ ★★★ ★★★ ★★★★★
Elasticity ★★ ★★ ★★ ★★★★★ ★★★★★ ★★ ★★★★★
Evolutionary ★★★ ★★★ ★★★ ★★★★ ★★ ★★★★★
Fault Tolerance ★★ ★★★★ ★★★★★ ★★★ ★★★ ★★★★
Modularity ★★★ ★★★ ★★★★ ★★★★ ★★ ★★★★★
Overall Cost ★★★★★ ★★★★ ★★★ ★★★ ★★★ ★★
Performance ★★ ★★ ★★★ ★★★ ★★★★ ★★★★★ ★★ ★★
Reliability ★★★ ★★★ ★★★ ★★★★ ★★★★ ★★★ ★★★ ★★★★
Scalability ★★ ★★ ★★★ ★★★★★ ★★★★★ ★★★ ★★★★★
Simplicity ★★★★★ ★★★★ ★★★ ★★★
Testability ★★ ★★★ ★★★ ★★★★ ★★ ★★ ★★★★★

Key Dimensions

Monolith vs Distributed

Monolithic styles (single deployment unit, single quantum):

Distributed styles (multiple deployment units, multiple quanta possible):

Technical vs Domain Partitioning

Technical Partitioning Domain Partitioning
Layered Microkernel
Pipeline Service-Based
SOA Event-Driven
Space-Based
Microservices

(See Technical Vs Domain Partitioning)

Architecture Quanta Count

Style Quanta
Layered 1
Pipeline 1
Microkernel 1 (always)
Service-Based 1–few (coarse services)
SOA Variable (typically few)
Event-Driven Multiple
Space-Based 1–few
Microservices Many (potentially one per service)

Decision Guide

Start here: how many differing sets of architecture characteristics does the system need?

Secondary decision: synchronous vs asynchronous communication?

"Use synchronous by default, asynchronous when necessary." (→ Fundamentals Of Software Architecture)

Async is required when: scalability/elasticity are primary concerns, workflows are long-running, or differing service throughput would cause synchronous timeout/coupling problems.

The 8 Fallacies of Distributed Computing

Any distributed style pays the costs captured in the Fallacies Of Distributed Computing (Deutsch, Sun Microsystems, 1994): the network is not reliable, not zero-latency, not infinite-bandwidth, not secure, not static in topology, not administered by one person, not free to use, and not homogeneous. Architects choosing distributed styles must design explicitly for each fallacy.

Stamp Coupling (Distributed Styles Only)

Stamp coupling — passing more data than needed across service boundaries — wastes bandwidth and creates implicit schema coupling. Mitigate with: field selectors, GraphQL, purpose-specific request/response schemas.

Style Evolution Paths

Common migration trajectories:

  • Layered → Service-Based (split into 4–12 domain services; keep shared DB initially)
  • Service-Based → Microservices (split databases; increase granularity; add DevOps automation)
  • Layered → Modular Monolith (add domain partitioning within a single deployment; preserve migration option)

Open Questions

Open question: How do Richards & Ford's ratings compare to Kleppmann's implicit treatment in DDIA? The overlap is primarily in the distributed styles (event-driven, service-based, microservices) and their consistency/transaction trade-offs.

Finding: Software Architecture The Hard Parts substantially extends this taxonomy. Ch 4 introduces six decomposition patterns for breaking apart a monolith, with service-based architecture as the primary migration destination. Ch 6 adds data decomposition — the five-step process for separating a shared database across services. The key SATH contribution: concrete, step-by-step guidance on how to decompose, not just when.