Review of Martin Kleppmann’s book on distributed systems “Designing Data-Intensive Applications”

Knowing my passion and interest in distributed systems, a colleague of mine recommended Martin Kleppmann’s book “Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems” which, even if a few years ago, in my opinion it is still very current for those who develop back-end applications and architects who want to migrate their on-promise systems to the Cloud (eg Azure, AWS, etc).

While the book’s ultimate purpose is to give ideas on how to build reliable applications that handle large amounts of data, even the back-end developer working on simpler systems – such as simple APIs – may find it useful.

The author, Martin Kleppmann, who if you don’t know him you can also appreciate him for his youtube channel that talks about distributed systems, has the very rare ability to be able to explain very complex concepts in a very simple way. I must say a fantastic writer.

Starting from a long way off, he clarifies the most commonly used terms, such as reliability, scalability, maintainability, ACID, etc.
In addition, he explains in detail how local databases work, therefore all the concepts of “transaction”, up to distributed databases (eg CosmosDB, Key-Value stores, etc).
Moving from the uselessness of the term ACID and the CAP theorem (which we used to think they were the “Bible”), to the explanation of 2PC (2 Phase Commit) and XA, serialization, partitioning, sharding, and the fundamental concept of ” consensus “, manages to clarify the ideas on the most common problems that we find at work.

Speaking of distributed systems, he explains the pros and cons of messaging systems like RabbitMQ and Kafka, the mistakes you shouldn’t make and that things aren’t as simple as they seem. The level of detail that he manages to achieve is impressive, thanks also to the simple, real, and easy to understand examples.
He doesn’t show any code (Java, C #, etc) but stays at a higher level. A book therefore suitable for Architects, but also for passionate back-end developers who want to be more involved in discussions / design.

After that he puts everything together to propose his vision of how to implement a complex system that is, however, also reliable and maintainable over time.

NB. for each chapter it reports about a hundred links / references for those wishing to deepen a specific topic, a thing of immense value, because having the right reference in the sea of ​​available information is priceless.

I have clarified how many things I took “for granted” work, such as SQL Server “transaction isolation levels” and why the “Transaction log” is important and how it works.
Already while reading I found myself facing discussions at work in a much safer way and with clear ideas of what I was saying, feeling the pros and cons of the different solutions, and above all proposing alternatives.

Haven’t you read it yet? You do not know what you’re missing!

Add a Comment

Your email address will not be published. Required fields are marked *