# Release It! (Book) - Author(s): [[Michael Nygard]] - Link: https://pragprog.com/titles/mnee2/release-it-second-edition/ ![[Release It! (Book).webp|200]] ## Description *Release It! Design and Deploy Production-Ready Software* is [[Michael Nygard]]'s book about what happens to software after it ships. The first edition came out in 2007 (Pragmatic Bookshelf). The second edition (January 2018, 376 pages) covers the stability material plus containers, cloud networking, deployment, versioning, security and chaos engineering. The book grew out of Nygard's years running a commerce site in production as a developer working in operations. He kept seeing the same causes behind outages: connection pools with no timeouts, exceptions that never released a connection, threads blocked forever, and an ops team whose fix was to restart the servers several times a day. Release It! is his answer to that, and its subject is the system after QA signs off and real users arrive. Each part opens with a case study from a real system, such as an exception that grounded an airline, a retailer's launch from Thanksgiving through Black Friday, or a site trampled by its own customers. Then come the failure modes and the fixes. ## Quotes <!-- QueryToSerialize: LIST FROM #type/quote AND [[]] WHERE public_note = true SORT file.name ASC --> ## Key ideas - **Failures spread.** A fault in one component cracks the next one unless something in the design stops it. Nygard calls that "stopping crack propagation" - **Stability antipatterns** are the usual ways a system takes itself down: - Integration points, chain reactions and [[Cascading Failures|cascading failures]] - Blocked threads, slow responses and unbounded result sets - Self-denial attacks, dogpiles and unbalanced capacities between tiers - **Stability patterns** contain the damage: - **[[Timeouts (software)|Timeouts]]**: never wait forever on a remote call - **[[Circuit Breaker]]**: count failures on a remote call; past a threshold, fail immediately instead of queuing behind a dead dependency. [[Martin Fowler]] credits the book with popularizing the pattern - **[[Bulkheads]]**: partition thread pools, connection pools and instances so one failing part can't sink the rest - **[[Fail Fast]]**, Steady State, Let It Crash, Shed Load ([[Load Shedding]]), Create Back Pressure ([[Backpressure]]), Governor, Handshaking, Test Harnesses and Decoupling Middleware - **Design for production, not for QA.** Configuration, logging and monitoring ("transparency"), deployment and versioning are part of the architecture. The book treats planned downtime as a fallacy and makes the case for automated, [[Continuous Deployment (CD)|continuous deployment]] - **Break things on purpose.** The last chapter covers [[Chaos Engineering|chaos engineering]] (Netflix's Simian Army, disaster simulations) as the way to find weak spots before customers do ## References - Pragmatic Bookshelf, Release It! Second Edition (contents, extracts, ISBN 9781680502398, first printing 9 January 2018): https://pragprog.com/titles/mnee2/release-it-second-edition/ - First edition on Goodreads (first published 30 March 2007): https://www.goodreads.com/book/show/1069827.Release_It_ - Martin Fowler, "CircuitBreaker": https://martinfowler.com/bliki/CircuitBreaker.html - GOTO Unscripted, "Building Software That Survives" (2025), with Nygard on how the book came about: https://gotopia.tech/articles/408 - Cover: Pragmatic Bookshelf, https://pragprog.com/titles/mnee2/mnee2-large.jpg ## Related - [[Michael Nygard]] - [[Software Architecture]] - [[Fail Fast]] - [[DevOps]] - [[Continuous Delivery (CD)]] - [[Continuous Deployment (CD)]] - [[Architecture Decision Records]] - [[Martin Fowler]] - [[Circuit Breaker]] - [[Cascading Failures]] - [[Backpressure]] - [[Chaos Engineering]] - [[Timeouts (software)]] - [[Bulkheads]] - [[Load Shedding]]