Designing Data-Intensive Applications is a huge book! 500+ pages!
I don’t regret buying it at all but I do regret buying the physical version instead of the kindle version because it is heavy!
Designing Data-Intensive Applications comes with the following subtitle: The Big Ideas Behind Reliable, Scalable and Maintainable Systems which perfectly describes the content of this book, it is a combination of theory and practice with concrete software examples.
I can easily see Designing Data-Intensive Applications becoming a book used in college, I can see it as the main reference for Distributed Systems; kind of like Tanenbaum’s Computer Networks. Designing Data-Intensive Applications is not an introductory book to Distributed Systems and their technologies, you will need to be familiar with the concepts already, even if you haven’t used the systems implementing those concepts in real life.
I liked Designing Data-Intensive Applications a lot, it is really a well written book because it does a great job introducing theory and concepts before describing the real world example of the specific software system implementing that said concept, it even compares similar technologies, and it gives you a vast number of references that back-up the content. It is obviously not a quick read and it will feel a bit “dry” sometimes, specially in the beginning when the initial concepts are introduced, but it does balance the theoretical content with concrete examples.
Designing Data-Intensive Applications complements some books I’ve read in the past (like Big Data, Building the Web of Things and Building Microservices), it is a definetly a must read book for anyone working on or interested in Distributed Systems and the ideas behind them.