Release It! is a Pragmatic Programmers book from Michael Nygard, a noted architect, developer, and troubleshooter. In the book he explains patterns that lead to stability, capacity, and no 3am phone calls. He also covers anti-patterns that reduce stability, capacity, or reliability.
I really, really, really like this book. It’s in that rare category of books that every software developer should read.
The writing is crisp, clear, concise, and realistic. The author explains both technical and non-technical factors clearly and cleanly. He’s not presumptuos, and does not have the “holier than thou” attitude of some authors. The breadth and depth of his experience shine through.
On one hand, I was pleased with myself that I already practice (not just know about) many of these patterns. Whether by luck or by getting burned in the past, I’ve seen a lot of the anti-patterns and I know how to deal with them.
But there are also a number of mistakes I make or have made. There were probably 3-4 “oh shit” moments. I realized some of the stuff he’s talking about, I’ve done myself. What’s more, it’s still live in production somewhere! Patches forthcoming.
The author’s observations on the co-existence of “operations” and “development” are very good. I also happen to agree with his disdain for equalizing “verified in QA” as “ready for production” and how the QA environment will never be the same as production, so stop that wishful thinking. The deployment checklists and zero-downtime-deployment notes are very good.
All in all, a really good book. It doesn’t yearn to be some advanced computer science paper nor does it claim to provide any silver bullets. Just lots of practical advice that will save you 3am phone calls.
The full title is Release It! Design and Deploy Production-Ready Software.