The book is extremely interesting as it’s a collection of patterns and practices
to build reliable and robust distributed systems, with a few advices on process
design as well: for example, I extremely liked, at the beginning of the book,
the notion that a lot of software architects are living in the “ivory tower”,
meaning that they are distant from the real-world code that turns their ideas
into working software, and rely too much on the happy-path rather than
recognizing that, more often that we’d like, systems are going to fail.

Another trait of the book I really liked is the fact that the author brings his
own experience to the table: you’ll read about weird situations where an e-commerce
portal used to be down every night at a specific time, how a “dumb” firewall can
kill all of your idle connections and so on; by the end of the book you’ll surely
be hating on firewalls, connection pools and (missing) timeouts.

The only negative I can think of is that the book is a bit too java-ish, as
sometimes you might feel some ideas won’t really apply to the platform you
generally work with — but, to be honest, that’s no biggie.

Strongly, strongly recommended for software engineers that want to understand how
their systems should be modeled once they reach a certain scale and, inevitably,
need to deal with failure.