7

Part of an answer to my (meta) question "Rename feature-flags to feature-toggles?" is like so:

... There's could be valid questions about feature flags (formalism, documentation about them, process of definition), which may not be related to feature toggles but to feature ramp up which carry a less binary meaning. ...

My question: In the context of DevOps, what's the difference between feature flags and feature toggles (if any)?

PS: Looking at https://martinfowler.com/articles/feature-toggles.html , I don't get the difference between such flags and toggles.

8

If you take it on an objective only point of view, there's no difference.

But feature toggles carry a heavy binary "on/off" for the whole application idea, whereas feature flags are a more relaxed term which can encompass ramp up testing more easily.

When you launch a ramp up testing and turn the new feature on for 10% of your traffic or user base and move up to 20% the next week and so on, the toggle term become counter productive. Some people (managers/commercials/some client support people) may not really understand only a part of the clients get the new feature.

Ramp up can be defined as (quote from wikipedia on software testing technology):

The usual sequence is to ramp up the load: to start with a few virtual users and increase the number over time to a predetermined maximum. The test result shows how the performance varies with the load, given as number of users vs. response time.

I like etsy's feature API (even is not maintained) as source for explanation, it's an easy to undertand framework which has a good readme around feature flags and their uses.

So the difference can be done in the usage of the terms to just help avoiding confusion on what happens on the application.

  • OK, that helps already. Would you mind also adding some explanation about "ramp up" testing (or a link or something). Just to avoid I reach my daily question limit too fast ... – Pierre.Vriens Mar 6 '17 at 11:18
  • Give me a second, I'll do this – Tensibai Mar 6 '17 at 11:20
  • Relax, even though your "second" already expired, fine for me "some day" also ... If you can/want, maybe some basic sample could help to further improve your answer also ... – Pierre.Vriens Mar 6 '17 at 11:25
  • @Pierre.Vriens done ;) I don't think dummy examples would be really relevant, code is not neede here IMHO. – Tensibai Mar 6 '17 at 11:28
3

I would add that a toggle is on/off (show ads on the site, don't show ads) and perhaps augmented by a flag like (West Coast gets ads from provider A, East Coast gets ads from provider B). Toggling turns off all ads. A feature flag might be able to switch from provider A to provider C.

I also think a key part is deciding how your switches and settings work - do you have to roll out a new build? or can your control tower determine east coast/west coast and answer "which provider" all on the fly with an easy, almost foolproof interface.

  • Interresting addition and examples to explain the concepts! The "control tower" seems like "from a distance", no? If so, then I think another variation is when at runtime the software does some checking about some prereqs (eg the release of the OS it is running in), to yes/no (= toggle) make something happen. Am I close? If so would you mind addding this also to your answer somehow? – Pierre.Vriens Mar 7 '17 at 8:03
  • Probably worth commenting on but also probably worth its own question. If you ask something like "How do I control my feature settings so I can incrementally roll out my settings in a controlled manner?" I can offer my opinion. Too long for 500 characters and would probably get lost in the shuffle here anyway. There are also likely people with different/better opinions than mine. – No Refunds No Returns Mar 8 '17 at 4:48
  • devops.stackexchange.com/questions/162/… is the question where this could be discussed. – No Refunds No Returns Mar 8 '17 at 5:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.