Feature Flags
Decoupling deploy from release, with an expiry date.
6 to work through
-
intermediate
A codebase has accumulated hundreds of feature flags, many years old. What went wrong, and what discipline prevents it?
2 min answer -
intermediate
A platform has accumulated hundreds of feature flags and nobody knows which are safe to remove. What went wrong, and what practice prevents it?
2 min answer -
intermediate
A team adopts feature flags enthusiastically and two years later the codebase is full of them. What went wrong, and how should flags be managed as a lifecycle?
3 min answer -
intermediate
Your feature flag service becomes unavailable. What happens to the fleet, and what should happen?
2 min answer -
advanced
A codebase has 300 feature flags. What went wrong and how do you fix it without breaking anything?
2 min answer -
advanced
A feature flag controls a pricing rule. Finance asks who changed it, when, what the previous value was, and which orders were priced under the new value. Walk me through what that requirement does to the design of your flag system.
3 min answer
6 terms in this topic
Feature Flags
Decoupling deployment from release, so code ships continuously and exposure is a runtime decision — with a lifecycle that must be enforced.
practiceFlag Change Provenance
Recording who changed a flag, when, from what to what - and, separately, stamping the effective configuration version onto every artefact it influenc…
conceptFlag Debt
The accumulating complexity of feature flags that are never removed, producing untested code paths and combinatorial behaviour nobody understands.
practiceFlag Expiry Discipline
Creating every flag with an owner and an expiry date and treating removal as part of the rollout's definition of done - because flags have a creation…
case-studyKnight Capital: $440 Million in 45 Minutes
A deployment that reached seven of eight servers, combined with a reused feature flag, activated dormant test code and destroyed the company in three…
patternRelease Toggle
A short-lived flag that decouples deploying code from releasing a feature, intended to be removed within weeks - and the category responsible for alm…
Neighbouring topics
Software Architecture
General material on the engineering underneath an architecture.
SOLID
Five design principles, two of which scale beyond the class.
Domain-Driven Design
Ubiquitous language, bounded contexts and context mapping.
Bounded Contexts
Where one model ends and another begins, and why forcing one fails.
Clean Architecture
Concentric layers with dependencies pointing only inwards.
Hexagonal Architecture
Ports defined by the domain, adapters supplied by infrastructure.
Microservices
Independent deployability, and the distributed problems it buys.
Modular Monolith
Enforced internal boundaries without a network between them.
Service Boundaries
Drawing lines along change patterns rather than technical layers.
Design Patterns
Reusable solutions at code level, and when they become ceremony.
Refactoring
Changing structure without changing behaviour, in verified steps.
Technical Debt
Deliberate, tracked and repaid — as distinct from mess.
Testing Strategies
The pyramid, and the contract tests distributed systems add to it.
Contract Tests
Capturing what consumers actually use, not what the API documents.
CI/CD
Continuous integration and delivery, and the architecture that caps them.
Release Strategies
Blue-green, canary, shadow and progressive delivery.
Trunk-Based Development
Short-lived branches, and unmerged work as inventory.
Code Review
Where architectural rules are enforced by people rather than by tools.
DORA Metrics
Throughput and stability moving together rather than trading off.