March 17, 2010

Release It! (book)

Author: Michael Nygard, Pub: Pragmatic Bookshelf, 2007.
Subtitle:  Design and Deploy Production-Ready Software.
Publisher's site

As you'd expect from The Pragmatic Programmers, Michael Nygard provides a very readable and highly relevant account of the common failings in system stability and performance, and how to avoid them by good design.  Specifically he covers the design of server software (particularly web applications) and its deployment connectivity, load balancing and clustering.

The technologies in the war stories and guidelines include TCP, HTTP, web servers, AJAX, DNS, the JEE ecosystem and relational databases,but the principles explained are equally applicable to other technologies.

Highly recommended reading for:
  • developers and software architects - to design decoupled software to minimise blocked threads and chains of tightly-coupled synchronous callers, achieve scalable object sharing and caching, and keep within a sustainable memory budget.
  • system and solution architects - to design the system deployment to provide runtime qualities such as stability, performance, scalability, high availability, and operability through transparency (for system monitoring and diagnosis). 
  • performance engineers - to understand capacity issues and the potential causes of system stability, performance and scalability problems.