Chapter 1. Reliable, Scalable, and Maintainable Applications

Posted on 2018-11-26

系统需要达到的目标:

  • Reliability: tolerating hardware & software faults, human error.
  • Scalability: measuring load & performance, Latency, percentiles, throughput.
  • Maintainability: Operability, simplicity & evolvability.

很多App的瓶颈不是在于compute-intensive, 而是data-intensive, the amount of data, the complexity of data, the speed at which it is changing.

很多app需要:

  • Store data so that they, or another application, can find it again later (databases)
  • Remember the result of an expensive operation, to speed up reads (caches)
  • Allow users to search data by keyword or filter it in various ways (search indexes)
  • Send a message to another process, to be handled asynchronously (stream processing)
  • Periodically crunch a large amount of accumulated data (batch processing)