In the last decade (or even more) no software engineering book gained more attention or have been discussed more than Martin Kleppmann’s Design Data-Intensive Applications (2017), which can be considered a new classical on computation books.
It took a while (and two attempts) to fully read this book, it’s not the easiest book to read as most chapters get complex and requires rereading some parts to get full understanding.
The book starts talking about applications reliability and the challenges of real-world software nowadays that need to deal with massive amount of data. Progressively increasing the challenges it explains various types of concepts about databases and evolves over the chapters to distributed scenarios where things get really hard.
Most of the topics are very interesting and improve the understanding of databases, distributed systems and all the complexity of that modern software have.
The Part I of the book, which discusses fundamentals ideas of data intensive applications (Chapters 1, 2, 3 and 4), is amazing and a in my opinion a must read for all developer. The part two and three are more difficult to follow, and sometimes can frustrate but still worth reading.
Overall an amazing book to learn more about fundamentals of data applications and all challenges behind it.

