Skip to content

Design Data-Intensive Applications

Chapter 1 Reliable, Scalable, and Maintainable Applications

Requirement Aspects
Reliability Tolerating hardware & software faults, Human error
Scalability Measuring load & performance, latency percentiles, throughput
Maintainability Operability, simplicity, and evolvability



  • Performs the function that the user expected.
  • Tolerate user making mistakes or using it in an unexpected way.
  • Performance is remains good for required use cases, under expected load and data volume.
  • Prevent unauthorized access and abuse.


  • Faults: usually defined as one components deviating from its spec.
  • Failure: a whole system stop provide the required service to the user.
  • Fault tolerance or resilient: prevention v.s. cure faults.

Hardware Faults

Software Errors

Human Errors