Book Review: Release it! Design and Deploy Production-Ready Software“Release it!” is an excellent book that makes you and your application prepared for the harsh production world. The book entertains on all kinds of things related to the most important part of development lifecycle – releasing your product and keeping it alive.

The book has four parts – stability, capacity, general design issues, and operations. Each part is introduced by interesting case studies, for instance describing how single unhandled exception costed an airline a day of nightmare and tons of money.

Keywords

Let me list some of the keywords from the book for better idea what the book is about:

  • Part I – Stability: scaling strategies; fail fast; SLA; timeouts; circuit breaker; bulkhead (don’t sink entire ship); common sense on log files; health checks; etc.
  • Part II – Capacity: resource pools; threads; payload sizes; db performance; cookies; caching; etc.
  • Part III – General Design Issues: load balancing; clustering; configurations; networking; security; etc.
  • Part IV – Operations: transparency; statistics; logging; monitoring systems; etc.

Pros

Things that I really liked about the book:

  • It easy to read, provided you have relevant experience
  • Real world case studies
  • “Remember This” sections after most of the chapters (better than boring summaries)
  • Realistic strategies and approaches
  • Business costs and impact discussed

There is a really nice strategy explained on zero-downtime. One, that especially boggles me, was approach related to database upgrade process for zero downtime. The strategy is relatively simple: 1) you extend the system/db and add some bits and pieces so it is backwards compatible, for db it could mean new nullable columns and triggers to fill-in data, 2) you roll out, 3) you cleanup. Easy!

Cons

Not so great things about the book:

  • Some technologies mentioned are somewhat outdated (book released in 2007)
  • Examples are in Java and frameworks mentioned are Java-world, so not totally language agnostic
  • At places a bit too ops heavy

Conclusion

The book will be most useful for developers of large enterprise applications, especially where downtime costs real money.

But, in any case, I would highly recommend any developer, and deployment engineer for that matter, to read this book!