Ask HN: Recommendations for a book on Distributed Systems?

99 points by bogomipz ↗ HN
I wanted to ask what people have read and would recommend for a book(s) on Distributed Systems. Both the Coulouris book and the Tanenbaum book seem to be pretty standard but the reviews and ratings on these seem to be underwhelming:

https://www.amazon.com/Distributed-Systems-Principles-Paradigms-2nd/dp/0132392275/

https://www.amazon.com/Distributed-Systems-Concepts-Design-5th/dp/0132143011

23 comments

[ 2.8 ms ] story [ 64.7 ms ] thread
We used Coulouris in our Distributed Systems course back in 2010, it covers all the fundamentals used in today's modern systems.

Things like ring quorums are implemented by Cassandra and other systems, I just didn't know about them (ie Cassandra et al...) to put a face to the name back then.

One thing to do is to start reading papers, and branch out from there. There's a few major ones like the Map-Reduce Paper, BigTable, Dremel, Raft, perhaps Paxos etc... and use the citations to then deepen your understanding.

Also there's plenty of people here who can always answer questions. :)

Cheers.

I recommend The Little Elixir & OTP Guidebook.

https://www.manning.com/books/the-little-elixir-and-otp-guid...

It's easier to build distributed apps with Elixir because of Erlang's OTP. Check it out, I'm sure it'll be interesting for you.

Erlang (and Elixir) are great systems, but they're not a magic bullet - you still need to know what you're doing when designing a distributed system.
Agreed. They give you much more powerful concurrency primitives than most languages, but there are still a host of challenges to overcome.
It's not released yet, but I've been reading the early release version of Designing Data-Intensive Applications by Martin Kleppmann (http://shop.oreilly.com/product/0636920032175.do). I've found it pretty useful and well-written thus far. He does a good job of explaining concepts and then tying them to real-world implementations and examples. It's a good balance of theory and practical knowledge.
This is definitely a must read. A very systematic approach of explaining different concepts with real examples, problems each solution brings and tradeoffs we do by choosing approach A vs approach B. Not sure if I can recommend any technical book more than this one!
To add to what other's have said I've found "Designing for Scalability with Erlang/OTP: Implement Robust, Fault-Tolerant Systems" https://www.amazon.com/Designing-Scalability-Erlang-OTP-Faul... to pretty useful even though I don't care about Erlang (that much), because the last 4 chapters are about designing scalable and fault tolerant distributed systems in generic terms that apply even to non-Erlang systems.

Also as a side note, does anyone know why are the Amazon categories so bad? http://prntscr.com/dr3itj This book is classified in "javascript".

You might also find this book helpful https://www.amazon.com/Systems-Performance-Enterprise-Brenda...

since it's essentially about how to perf measure, and debug computers in the cloud which is the annoying part of distributed systems.

Also you should keep in mind that there are some books that are specifically about doing distributed systems using a particular framework e.g. this one on using Akka on JVM https://www.amazon.com/Akka-Action-Raymond-Roestenburg/dp/16...

pacemaker/corosync documentation @ http://clusterlabs.org/

nontrivial distributed systems are like crypto: don't roll your own primitives unless you are a masochist, fetishist, time-rich or forced to.

I would suggest "Introduction to Reliable and Secure Distributed Programming" (https://www.amazon.de/Introduction-Reliable-Secure-Distribut...).

I never read the book, but took a course with author based on this book. It was fun and interesting; covering both basic and advanced concepts in distributed systems.

I have the book and am currently reading it. I like it, seems very thorough. The first part is fairly theoretical and the 2nd part gets into the more practical implementation of distributed systems based on the previous theory covered.

I'd recommend it.

Reviews for textbooks (which these are) are always underwhelming due to the uneven quality of CS classes and students.
But there are books like CLRS and SICP that are also text books that are almost universally recommended.
24% of the Amazon reviews for SICP are for one star- I probably should have specified 'popular reviews' as obviously the reviews in professional journals, etc will be different than a place like Amazon where you have undergrads ranting about their abysmal distributed systems class and the $100 book the professor never used.
(comment deleted)
This was my favorite back in 2008. If I can recall accurately the fundamentals it covers should still apply.

Andrew S. Tanenbaum and 1 more Distributed Systems: Principles and Paradigms (2nd Edition) 2nd Edition ISBN-13: 978-0132392273, ISBN-10: 0132392275