Ask HN: Best books on modern distributed systems
I've read designing data intensive systems and it covered distributed systems a bit.
I don't find most textbooks to be an actually good intro outside of a course setting. For example, I own Andrew Tannenbaum's Distributed System book and a few others of his. But his writing style is too dense for me to make enough progress without giving up.
What other books (probably not textbooks) do you recommend on distributed systems?
22 comments
[ 54.8 ms ] story [ 1113 ms ] threadWhen doing my MSc in CS at Uppsala University we implemented a distributed system. We used Tanenbaum's book and while very good it was a bit terse on details. Looking up the actual research papers referenced was helpful during implementations.
* Release It! by Michael Nygard
* System Design Interview by Alex Xu
I am going to move onto either
* O'Rielly Designing Distributed Systems or
* O'Rielly Architecture Patterns with Python
Could anyone recommend either one?
I am mainly a Python dev (with no particular love for Python), but that doesn't necessarily make me want to use the Python book more. Having code examples I can grok immediately is nice, but I also enjoy the exercise of translating concepts to code myself.
I would not recommend Architecture Patterns with Python. Some patterns there are questionable and introduce more complexity. Also, they talk about using Kafka and Service Bus in the book, but never mention an important issue you may face in real implementation: consistency in updating both a message bus and a database that usually is addressed with Outbox pattern https://microservices.io/patterns/data/transactional-outbox....
It sounds roundabout, but you're letting a battle-tested implementation handle the database-table-listening aspects with no special outbox implementation needed on the database write.
Also, the messages produced reflect database changes, not domain events. I would prefer to have an explicitly defined interface layer for consumption. At least, use database views as contracts with Kafka Connect.
I'm pretty sure there is an online course available which you can watch, so it's a slightly different medium but may be a nice change of pace from reading. The course was really informative for me and has really been paying dividends in my career.
"Guide to Reliable Distributed Systems: Building High-Assurance Applications and Cloud-Hosted Services"
He even give a course about topics in cloud computing : https://www.cs.cornell.edu/courses/cs5412/2021sp/
Another interesting course about distributed system is from MIT https://pdos.csail.mit.edu/6.824/schedule.html