Notes on Martin Kleppmann's excellent Designing Data-Intensive Applications.
- Data Systems
- Dimensions to consider when thinking about data systems: access patterns, performance characteristics, implementations.
- Modern data systems often blur the lines between databases, caches, streams, etc.
- Reliability
- Systems should perform the expected function at a given level of performance, and be tolerant to faults and user mistakes
- Fault: One component of a system deviating from its spec. Prefer tolerating faults over preventing them (except for things like security issues). Faults stem from hardware failures, software failures, and human error (in a study, config errors caused most outages).