npx skills add ...
npx skills add ancoleman/ai-design-components --skill designing-distributed-systems
When designing distributed systems for scalability, reliability, and consistency. Covers CAP/PACELC theorems, consistency models (strong, eventual, causal), replication patterns (leader-follower, multi-leader, leaderless), partitioning strategies (hash, range, geographic), transaction patterns (saga, event sourcing, CQRS), resilience patterns (circuit breaker, bulkhead), service discovery, and caching strategies for building fault-tolerant distributed architectures.
npx skills add ancoleman/ai-design-components --skill designing-distributed-systems
Design scalable, reliable, and fault-tolerant distributed systems using proven patterns and consistency models.
Distributed systems are the foundation of modern cloud-native applications. Understanding fundamental trade-offs (CAP theorem, PACELC), consistency models, replication patterns, and resilience strategies is essential for building systems that scale globally while maintaining correctness and availability.
Apply when:
CAP Theorem: In a distributed system experiencing a network partition, choose between Consistency (C) or Availability (A). Partition tolerance (P) is mandatory.
PACELC: Extends CAP to consider normal operations (no partition).
Strong Consistency (Linearizability):
Eventual Consistency:
Causal Consistency:
Bounded Staleness:
1. Leader-Follower (Single-Leader):
2. Multi-Leader:
3. Leaderless (Dynamo-style):
Hash Partitioning (Consistent Hashing):
Range Partitioning:
Geographic Partitioning:
Circuit Breaker:
Bulkhead Isolation:
Timeout and Retry:
Rate Limiting and Backpressure:
Saga Pattern:
Choreography: Services react to events
Orchestration: Central coordinator
Event Sourcing:
CQRS (Command Query Responsibility Segregation):
Client-Side Discovery:
Server-Side Discovery:
Service Mesh:
Cache-Aside (Lazy Loading):
Write-Through:
Write-Behind (Write-Back):
Cache Invalidation:
| System | If Partition | Else (Normal) | Use Case |
|---|---|---|---|
| Spanner | PC | EC (strong) | Global SQL |
| DynamoDB | PA | EL (eventual) | High availability |
| Cassandra | PA | EL (tunable) | Wide-column store |
| MongoDB | PC | EC (default) | Document store |
| Cosmos DB | PA/PC | EL/EC (5 levels) | Multi-model |
| Use Case | Consistency Model |
|---|---|
| Bank account balance | Strong (Linearizable) |
| Seat booking (airline) | Strong (Linearizable) |
| Inventory stock count | Strong or Bounded |
| Shopping cart | Eventual |
| Product catalog | Eventual |
| Collaborative editing | Causal |
| Chat messages | Causal |
| Social media likes | Eventual |
| DNS records | Eventual |
| Configuration | W | R | N | Consistency | Use Case |
|---|---|---|---|---|---|
| Strong | 3 | 3 | 5 | Strong | Banking |
| Balanced | 3 | 2 | 5 | Strong | Default |
| Write-heavy | 2 | 3 | 5 | Strong | Logs |
| Read-heavy | 3 | 1 | 5 | Eventual | Cache |
| Max Avail | 1 | 1 | 5 | Eventual | Analytics |
For comprehensive coverage of specific topics, see:
Complete, runnable examples demonstrating patterns:
Visual representations for complex concepts:
Related Skills:
For Kubernetes deployment: See kubernetes-operations skill for pod anti-affinity, service mesh
For infrastructure: See infrastructure-as-code skill for deploying distributed systems
For databases: See databases-sql and databases-nosql for replication configuration
For messaging: See message-queues skill for event-driven architectures, saga orchestration
For monitoring: See observability skill for distributed tracing, monitoring patterns
For testing: See performance-engineering skill for load testing distributed systems
For security: See security-hardening skill for mTLS, service authentication
Design for Failure:
Choose Consistency Carefully:
Idempotency is Critical:
Monitor and Observe:
Partition Strategically:
Version Everything:
Distributed Monolith:
Two-Phase Commit (2PC) Overuse:
Ignoring Network Failures:
Strong Consistency Everywhere:
No Conflict Resolution Strategy:
Cache Stampede:
Replication Lag Too High:
Split-Brain Scenario:
Hot Partitions:
Saga Timeout/Stalled:
Conflict Resolution Failures:
Strong Consistency ◄─────────────────────► Eventual Consistency
│ │ │
Linearizable Causal Consistency Convergent
(Slowest, (Middle Ground, (Fastest,
Most Consistent) Causally Ordered) Eventually Consistent)[Closed] → Normal operation
│ (failures exceed threshold)
▼
[Open] → Fail fast (don't call failing service)
│ (timeout expires)
▼
[Half-Open] → Try single request
│ success → [Closed]
│ failure → [Open]Order Service → OrderCreated event
Payment Service → listens → PaymentProcessed event
Inventory Service → listens → InventoryReserved event
(Compensating: if payment fails → InventoryReleased event)Saga Orchestrator:
1. Call Order Service
2. Call Payment Service
3. Call Inventory Service
(If step fails → call compensating transactions in reverse)Read:
1. Check cache → hit? return
2. Miss? Query database
3. Store in cache, returnWrite:
1. Write to cache
2. Cache writes to database synchronously
3. Return successWrite:
1. Write to cache
2. Return success
3. Cache writes to database asynchronously (batched)Decision Tree:
├─ Money involved? → Strong Consistency
├─ Double-booking unacceptable? → Strong Consistency
├─ Causality important (chat, edits)? → Causal Consistency
├─ Read-heavy, stale tolerable? → Eventual Consistency
└─ Default? → Eventual (then strengthen if needed)├─ Single region writes? → Leader-Follower
├─ Multi-region writes + conflicts OK? → Multi-Leader
├─ Multi-region writes + no conflicts? → Leader-Follower with failover
└─ Maximum availability? → Leaderless (quorum)├─ Need range scans? → Range Partitioning (risk: hot spots)
├─ Data residency requirements? → Geographic Partitioning
└─ Default? → Hash Partitioning (consistent hashing)1. Choose replication: Multi-leader or Leaderless
2. Partition data geographically
3. Implement conflict resolution (LWW, vector clocks, app-specific)
4. Monitor replication lag
5. Add circuit breakers between datacenters1. Define saga steps and compensating actions
2. Choose choreography (events) or orchestration (coordinator)
3. Implement idempotent handlers (retries safe)
4. Publish events with outbox pattern (transactional)
5. Monitor saga progress and timeouts1. Use leaderless replication (N=5, W=3, R=2)
2. Partition with consistent hashing
3. Add circuit breakers for failing nodes
4. Implement read repair and anti-entropy
5. Monitor quorum health