Review of 'Designing Data-Intensive Applications' on 'Goodreads'
5 stars
Incredible! This took me half a year to read because it's dense and huge. The scope is enormous and the footnotes and citations are all worthy of pursuit. I simply couldn't absorb more than a couple pages at a sitting. It was exactly the thing I needed to get a survey of the techniques and tools used in distributed, fault-tolerant systems that need to run at scale.
I was extremely impressed that Kleppmann didn't merely explain why you would need to solve a particular problem and what each tool did, but also how (at a high level, of course, or it would have been 100 times longer). I've heard of most of the systems mentioned (e.g. Apache Kafka), but never had a clear understanding of why/what/how they would be used. Now I do. Again, the scope is astounding.
It also really helped me put into words the challenges of trying to make "online" transaction systems do the work of "batch" analytic systems. Those are two very antiquated computing terms, but that only highlights that the problems of the 1960s are the exact same problems of today - only the expectations have shifted. We expect to be able to do more now...even when it flies in the face of hard physical realities.
The exact tools mentioned herein will come and go, but I don't see the basic principles changing that much in the coming decades. These are problems we've been struggling with for the entire lifetime of computing. This book is a treasure. Highly recommended for any developer who would like to learn about large-scale systems.