author: martin kleppmann
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
https://public.nikhil.io/Designing%20Data%20Intensive%20Applications.pdf
update: 2022/12/26 12:32 목차 정리
a data-intensive application is typically built from standard building blocks
In this book, we focus on three concerns that are important in most software systems:
Reliability
The system should continue to work correctly even in face of adversity(h/w or s/w faults, human error)
Scalability
As the system grows, there should be reasonable ways of dealing with that growth.
Maintainability
over time, many different people will work on the system and they should all be able to work on it productively.
UPDATE: 2022/12/27 23:45
The things that can go wrong are called faults, and systems that anticipate faults and can cope with them are called fault-tolerant or resilient. The former term is slightly misleading: it suggests that we could make a system tolerant of every possible kind of fault, which in reality is not feasible.
So it only makes sens to talk about tolerating certain types of faults.
Note that a fault is not the same as a failure. A fault is usually defined as one component of the system deviating from its spec, whereas a failure is when the system as a whole stops providing the required service to the user. It is impossible to reduce the probability of a fault to zero; therefore it is usually best to design fault-tolerance mechanisms that prevent faults from causing failures. In this book we cover several techniques for building reliable system from unreliable parts.
UPDATE: 2022/12/28 22:50