Feature Control
WHY
Integrate Sooner
More control
Testable
Feature Life Cycle
Determine if a feature flag is appropriate
Determine the type of feature control to use
Implement Early
Write feature flagging components at the beginning
Integrate often
Do not use GIT as a feature control
Integrate code with your normal release process, even if the feature isn't complete
Test to ensure the "disabled" state of the feature works as expected
Beta test
Enable the feature for an internal group and iterate on it
Enable the feature for a trusted external group and get feed back
Release the feature
Enable the feature for all users
(should not require a deploy)
Factor out the feature flag
If it's not going away, remove the feature flag code
Feature Types
Add ons
Features that may never be turned on for all users
Use Database Feature
Create a boolean column in the emma_account_settings tableĀ
(for now)
The feature tag is the same as the column name
Roll outs
Features that will eventually be enabled for all users
Use RedisFeature
Self deprecating
Individual control until enable for all
NO GOING BACK
If you enable for all then disable for one, it will disable for all!
WHEN
Bugs probably don't need a feature flag
If you ever think, we can't merge this until...
It should have a feature flag
How
Factory
Template
Switch on the feature flag in the controller and use a different template
Inline
Pass a boolean to a template and switch internally
(use sparingly, gets messy)
Facade
Add a layer between the data and presentation that translates the data into the required format by the presentation
Questions
Feature Control
By entatemma
Feature Control
- 412