This book was my introduction to Distributed systems and the author has done an amazing job. The author covers the distributed system paradigm by starting with the communication, continuing with co-ordination, scalability, resilience and then ending up with testing. The material is top-notch and personally, I found the foot-notes provided to be very helpful. However, the material(esp. towards later chapters) is pretty intense, and if you are just looking for an introductory level book(like I was), then maybe this is best suited as a followup to the introductory material and not the introduction itself. Also, perhaps, it would have helped if the book had one of the earlier chapters introducing common patterns/jargons in distributed systems(eg - quorum, consensus, consistent hashing etc), however, this more reflects towards the expertise of the reader and less towards the author/book itself. All the above mentioned topics are still present in the book, however, they appear within their own context. To sum it up - A must read, and even better if you already have had some basic introduction to the distributed systems.