<< August 4, 2007 | Home | August 6, 2007 >>

Book: Release It!

Design and Deploy Production-Ready Software

Michael T. Nygard's book on releasing resilient enterprise software is a nice mixture of real world case studies and hands on tips for designing robust applications.

The book is organized in four parts:

  • Stability
  • Capacity
  • General Design Issues
  • Operations

Each part features case studies, patterns to apply and anti-patterns to avoid. For stability Michael advocates cynical software:

Cynical software expects bad things to happen and is never surprised when they do. Cynical software doesn’t even trust itself, so it puts up internal barriers to protect itself from failures. It refuses to get too intimate with other systems, because it could get hurt.
The patterns to achieve the decoupling include "Use Timeouts", "Circut Breaker" and "Fail Fast" — things you've probably already applied from time to time, summarized and put into context.

Technology is centered around on what you find in today's enterprises: Java EE app servers like Bea Weblogic, Oracle databases, Big IP F5 load balancers, Veritas Cluster Server, Sun boxes with Solaris from small V440s to the large E25K.

The book is focused on architecture and design so you will find only a few code snippets to illustrate concepts or specific flaws. It's neither a cookbook for the developer nor an academic paper that sells a methodology. Instead it contains hands-on experience and provides a good overview of the areas to look for to avoid common pitfalls when designing resilient applications for today's enterprise environments.

Available at Pragmatic Bookshelf.