1.Availability, reliability and durability
Three related but distinct guarantees: availability is the percentage of time a service can be reached and used; reliability is the probability it behaves correctly while it runs; durability is the probability that data already stored stays intact, even during downtime.
Key features
- Availability: can the service be reached and used right now — measured as % uptime
- Reliability: does the system behave correctly while running — measured as failure probability over time
- Durability: is stored data preserved, even across crashes or outages — measured as data-loss probability
- A system can be available but unreliable (up, but returning wrong answers)
- A system can be unavailable but still durable (down, but no data lost once it returns)
The three guarantees
- Availability (took a hit)
- Service returns errors for 90 seconds
- A replica must be promoted first
- "Can I reach it?" — no, for 90s
- Durability (held)
- The write was already replicated to 2 nodes
- No committed data was lost
- "Is it still there?" — yes
Command
availability = uptime / total_time (can I reach it?)
reliability = P(correct behavior over time) (does it work right?)
durability = P(stored data is not lost) (is it still there?)Availability = can you reach it; reliability = does it work correctly; durability = is stored data preserved. Different questions, different failure modes.