系统需要达到的目标:
- 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)