Problem Statement
Deploying new features directly to all users can cause widespread failures or degrade user experience if bugs exist. Rolling back a faulty feature often requires a full redeploy, causing downtime and operational overhead.
This diagram shows a microservice querying a feature flag service to decide whether to enable or disable a feature. An admin console updates flags dynamically.
### Before (no feature flag) ### def process_payment(user, amount): # Always use new payment gateway result = new_payment_gateway.charge(user, amount) return result ### After (with feature flag) ### FEATURE_FLAGS = {"use_new_gateway": True} def process_payment(user, amount): if FEATURE_FLAGS.get("use_new_gateway", False): result = new_payment_gateway.charge(user, amount) else: result = old_payment_gateway.charge(user, amount) return result