3. What are Feature Flag?
This is a mechanism which allows to turn on/off the particular functionality
without changing the code.
Off
Off
On
Show banner
Show new header
Large search box
Web site
New header
Menu Content
Search
4. How we have moved
from releases via Deploys
to launches using Feature Flags
5. Releasing process via deploys
● Create feature branch
● Write code
● Test on local/beta
● Fix bugs
● Resolve conflicts
● Merge
● Deploy
● Test on production
● Hotfix
● Enjoy or Rollback
6. Drawbacks of launching via deploys
● Changes have not been checked on live environment
● No real users passed through a new feature
● Deploy might cause errors spike*
● Requires extra deploy if something goes wrong
● Long lived branches
7. Long lived branches
● Maintenance is time consuming
● Plenty of merge conflicts
● Big piece of code is hidden
● Painful code reviews
● High risks of hotfixes
● High risks of rollback
13. Few variants of a new feature
Web site
New header
Menu
Content
Search
Register now!
Web site
New header
Menu
Content
Search
Register now!OR
14. Feature Flags framework requirements
● Ability to turn on/off without deployment
● Ability to turn on/off for particular users
● Ability to turn on/off for particular groups
● Ability to launch for percent of users
● Ability to make A/B experiments
16. Our Feature Flags flow
Express + ReactJS
application
Old PHP application
Other services
Other services
Other services
Separate git repo
Feature Flags
config file
API
19. Launch a new feature
● Setup feature flag
● Get feature flag value using API
● Make conditional in code
● Deploy code darkly
● Test on production
● Launch for everybody
Feature flag value
22. What do we get by using Feature Flags?
● Dark launching is easy
● Deploy big features by smaller parts
● Ability to test isolated code on production
● Ability to launch feature for particular users or percent of users
● Do an experiment and launch the best variant of the same feature
● Launch immediately
● Fast rollback without actual deployment
23. What do we get in addition?
● Codebase becomes more complex
● Extra work with auto tests
● Necessity to do code cleanup after launching