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

Made with Slides.com