Patterns of Distributed Systems Link to heading

Based on: Catalog of Patterns of Distributed Systems by Unmesh Joshi (published on martinfowler.com, Nov 2023)


Table of Contents Link to heading

  1. Why Distributed Systems Are Hard
  2. Pattern Groups at a Glance

1. Why Distributed Systems Are Hard Link to heading

A distributed system is a collection of independent computers that work together and appear to users as a single coherent system. Your bank, your email, your cloud storage — all of these are distributed systems.

The core challenges fall into three buckets:

Challenge Plain English Example
Partial failure Some nodes crash; others keep running One database server dies mid-transaction
Network unreliability Messages can be lost, delayed, or duplicated A “save” request arrives twice
No shared clock Machines can’t agree on what “now” means Two writes arrive simultaneously — which one wins?

The patterns in this guide are battle-tested solutions to these recurring problems. They are not new inventions; they are codified wisdom extracted from systems like ZooKeeper, Kafka, etcd, Cassandra, and Spanner.


2. Pattern Groups at a Glance Link to heading

┌──────────────────────────────────────────────────────────────────┐
│                    DISTRIBUTED SYSTEM LAYERS                     │
├──────────────────────────────────────────────────────────────────┤
│  G: Data Propagation & Observation  │  H: Distributed Txns       │
├──────────────────────────────────────────────────────────────────┤
│  E: Data Partitioning               │  F: Network & Requests     │
├──────────────────────────────────────────────────────────────────┤
│  C: Replication & Consensus         │  D: Time & Ordering        │
├──────────────────────────────────────────────────────────────────┤
│  B: Cluster Coordination & Leadership                            │
├──────────────────────────────────────────────────────────────────┤
│  A: Durability & Storage (foundation)                            │
└──────────────────────────────────────────────────────────────────┘