Effective Feature Management
Releasing and Operating Software in the Age of Continuous Delivery
Introduction
Since the Agile revolution in software development, teams have been pushing to move faster and faster every year. Over the past decade, the discipline of continuous delivery has helped software development teams increase their rate of delivery from months to minutes. Accelerating the pace of change results in huge advantages to both development teams and businesses: making frequent changes, observing feedback, and reacting quickly is a competitive edge, and every business is racing to gain the inside lane on their competitors.
Software development professionals need to recognize this shift and appreciate that achieving true continuous integration and continuous delivery (CI/CD) puts software development teams in a fundamen‐ tally different world. This new world brings with it enormous bene‐ fits but also new challenges. Delivering more changes more frequently can also introduce increased chaos and risk, especially when our toolkits for controlling risk have not adapted as quickly to this new world.
The tools and practices software developers have created to release slowly and safely don’t translate to a world in which dozens of changes are released each day. In fact, the very practices that were originally so sensible can become actively harmful.
Software developers need a new set of tools that are specifically designed for a world with continuous delivery. What if you could fully decouple the act of delivering software from the act of releasing features? What if you could deploy any time you want but release only when you’re ready?
- Imagine how development practices and software releases could evolve in a world in which code deploys are decoupled from making that code available to end users:
- Imagine that every deployment is deliberately, safely ramped up, allowing you to react instantly to the unexpected.
- Imagine that you could know how each new feature will per‐ form in production—with real users and real data.
- Imagine being able to instantly turn off a misbehaving feature, protecting the rest of your business.
- Imagine measuring the impact of each and every change so that you know how it will affect users and your business before you proceed.
In this book, I define a new category of software called feature man‐ agement and discuss the underlying technologies, use cases, and best practices for adoption. I also include real-world case studies throughout. Feature management enables businesses to dynamically control the availability of application features to end users. Product teams use feature management to progressively deliver new code and features to end users, run experiments and A/B tests, customize the user experience, and maintain highly reliable applications—all while the application is running and without the need to deploy new code. Wrapping each change in a feature flag and controlling it with a feature management service empowers a variety of people across the organization—from development and operations engineers to product and marketing managers—to move faster with less risk, while delivering better results for your customers.