Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))

Jez Humble, David Farley
Winner of the 2011 Jolt Excellence Award! Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours— sometimes even minutes–no matter what the size of a project or the complexity of its code base.   Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the “deployment pipeline,” an automated process for managing all changes, from check-in to release. Finally, they discuss the “ecosystem” needed to support continuous delivery, from infrastructure, data and configuration management to governance.   The authors introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization. For each, they review key issues, identify best practices, and demonstrate how to mitigate risks. Coverage includes   • Automating all facets of building, integrating, testing, and deploying software • Implementing deployment pipelines at team and organizational levels • Improving collaboration between developers, testers, and operations • Developing features incrementally on large and distributed teams • Implementing an effective configuration management strategy • Automating acceptance testing, from analysis to implementation • Testing capacity and other non-functional requirements • Implementing continuous deployment and zero-downtime releases • Managing infrastructure, data, components and dependencies • Navigating risk management, compliance, and auditing   Whether you’re a developer, systems administrator, tester, or manager, this book will help your organization move from idea to release faster than ever—so you can deliver value to your business rapidly and reliably.  


Reviewed: 2019-09-02
Continuous Delivery is a book that every agile team who wants to advance together should read. It is a handbook for every possible angle about delivering software continuously.

A team must first learn how to be agile. Estimating, planning, working together, following good engineering practices - these are tough adjustments for completely chaotic teams. But once a team feels like it has embraced agile, this is the exact book they should all read to make their software development cycle pain-free.

The book covers everything related to continually delivering working software: how to version control configuration, how to create a codebase that deploys identically to all possible environments, differing only by the config used for deployment, continuous integration, how to use a CI server to create a deployment pipeline, how to write good automated tests, how to write good automated ACCEPTANCE tests, pitfalls and challenges you might encounter while adopting Continuous Delivery practices, automating deployments, testing performance and security, manual testing, environment management, data management and migration strategies, version control, branching/merging, software componentization and dependency management, and a lot more.

If this seems like an awful lot to cover in a single book, it's because it is. The book is DENSE: absolutely packed with information. It's insight to word ratio is simply staggering. The only downside is that the book was written both to be read cover to cover as well as read piecemeal, which leads to repetition of information in some places. Since I read it cover to cover, this got mildly annoying, but it was pretty minor.

I was part of a team that was trying to adopt continuous delivery for the better part of two years. The book was not out at the time, and there were a lot of missteps and mistakes along the way. Our team learned a LOT of hard lessons about what works and what doesn't work to enable delivering software continually, and it was stunning to me just how much the book repeated, almost word-for-word, lessons that we learned in the process about the right way to do things. I know from first-hand experience that the advice offered in the book is rock-solid. I also know that the end-state, actually delivering working software through completely non-stressful deployments is a heavenly situation in which to work.

If your team is already agile and wants to take their delivery to the next level, I cannot possibly recommend this book highly enough. It's phenomenal.
Item Posts
No posts