ddia-principleslisted
Install: claude install-skill satbirbhbc-ux/ai-coding-principles
# Designing Data-Intensive Applications — Distilled Guide
> Source: Martin Kleppmann, *Designing Data-Intensive Applications*
> Central thesis: **Data is the core challenge of modern applications — not compute.**
---
## Part I: Foundations of Data Systems
### Chapter 1: Reliability, Scalability, Maintainability
#### Three Pillars
| Pillar | Definition | Key Metric |
|--------|-----------|------------|
| **Reliability** | System works correctly even when faults occur | Fault ≠ Failure; tolerate faults, prevent failures |
| **Scalability** | System handles load growth gracefully | Measure with percentiles: p50, p95, p99, p999 |
| **Maintainability** | System is easy to operate, understand, evolve | Operability + Simplicity + Evolvability |
#### Fault Categories
- **Hardware**: Random, independent (disk, RAM, power). Mitigate with redundancy (RAID, dual power).
- **Software**: Systematic bugs affecting all nodes simultaneously (leap-second bug). Mitigate with process isolation, monitoring, chaos engineering.
- **Human**: #1 cause of outages (config errors). Mitigate with good abstractions, sandboxes, canary deployments, fast rollback.
#### Scalability Patterns
- **Vertical (scale-up)**: Bigger machine. Simple but has ceiling.
- **Horizontal (scale-out)**: More machines (shared-nothing). Complex but unlimited.
- **Elastic**: Auto-scale on load detection. Good for unpredictable workloads.
**Twitter fan-out case study**: 4.6k writes/s but 300k reads/s. Solution: pre-comput