I have read a lot about feature toggles but have no practical experience of using them. What tools and techniques do people recommend for effective management of feature toggles?
I imagine the simplest way would be to store toggles as true/false values in the web.config file as appSettings but this doesn't sound a particularly good method.
Ideally I would like any method of managing feature toggles to:
Feature toggles allow you to keep your production-ready code base and your development code base more closely in sync. Depending on the dynamicity and durability of a feature, you can draw on different kinds of toggles such as release toggles, experimental toggles, permissioning toggles, and ops toggles, to name a few.
In software development, a feature toggle is a mechanism that allows code to be turned “on” or “off” remotely without the need for a deploy. Feature toggles are commonly used by product, engineering, and DevOps teams for canary releases, A/B testing, and continuous deployment.
When testing the new feature with a feature toggle, the toggle needs to be tested as well as the feature itself. The feature should only be visible to the end-user when it has been switched on. If the new feature is replacing an older version, then both need to be tested in case a change has affected either version.
One suggestion from a colleague is to store them in a .settings file. The advantage of this is that if you delete a toggle you get compiler errors anywhere the toggle has been used so you can be certain it's been completely removed from the code.
It's also possible to use some simple techniques to do feature toggling. It's not big or clever, but it's straight forward and it works.
UPDATE
Since asking this question I've had some more experience using feature toggles. I've looked at a few of the open source tools available and written about another simple database driven toggling mechanism I've used at work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With