Practice : Feature Flags and Controlled Rollouts
Purpose and Strategic Importance
Feature Flags and Controlled Rollouts allow teams to decouple deployment from release, making it possible to ship code continuously while controlling when and how features are exposed to users. This practice reduces risk, enables safe experimentation, and allows rapid rollback without redeployment.
By managing exposure to change, teams can learn faster, release more frequently, and build confidence in delivery systems without compromising stability.
Description of the Practice
- Feature flags (also called toggles or switches) enable teams to turn functionality on or off at runtime.
- Controlled rollouts gradually expose changes to users (e.g. via percentage rollout, canary deployments, user segments).
- Flags can be used for experimentation (e.g. A/B testing), dark launches, operational toggling, or kill switches.
- Telemetry and feedback are essential to monitor the impact of a feature in real time.
- Flags are tracked, documented, and retired regularly to prevent long-term technical debt.
How to Practise It (Playbook)
1. Getting Started
- Introduce basic feature toggles using open-source or commercial tools (e.g. LaunchDarkly, Unleash, Flipper).
- Wrap new or risky functionality in a flag and default it to “off”.
- Add monitoring and logging around flagged features to observe their usage and impact.
- Ensure that flagged features can be toggled independently of a code deployment.
2. Scaling and Maturing
- Implement progressive rollout strategies (e.g. 5%, 25%, 50%, 100%) to reduce exposure risk.
- Use flags to support blue/green or canary deployments.
- Establish hygiene practices for flag retirement and naming conventions.
- Include flag management in your release readiness and incident playbooks.
3. Team Behaviours to Encourage
- Think about “who should see this and when?” during development.
- Use flags proactively, not just reactively.
- Monitor user behaviour and system health during rollouts and adapt quickly.
- Treat flags as first-class citizens in code reviews, testing, and documentation.
4. Watch Out For…
- Flags becoming permanent, resulting in tech debt and confusion.
- Lack of visibility into which flags are live, their purpose, or their owners.
- Overuse of flags leading to increased test complexity or code branching.
- Releasing flagged features without appropriate monitoring or rollback controls.
5. Signals of Success
- Teams deploy frequently and release incrementally with minimal risk.
- Rollbacks are fast and do not require code changes or redeployment.
- Users receive value faster, with fewer disruptions or regressions.
- Feature performance and behaviour are monitored in real time.
- The use and retirement of flags is visible and well-managed.