Wednesday, February 12, 2014

Application Feature Switches

Feature Switches provide Development and Operations with control of the behavior within an application. User interfaces are told what components to show or hide. Server-side business logic can transition to new services or strategies at the flip of a switch. If something is misbehaving, it can simply be turned off until a fix is put in place. 

Try as we might, we can't always fully anticipate user behavior in a production environment. Using feature switches to disable services can save headaches and time dealing with production support while the service goes back under development.

I've worked in environments where clients must be notified well in advance of any little user interface change, but in an agile team, it may be difficult to provide enough notice of exactly what screen changes will take place. In these environments, feature switches with auto-enable support come in very handy allowing the release notes to be delivered even as late as the install date. If for example the client-agreement requires 7 days notice, all features going out can be set to turn themselves on after 7 days.

Feature Switches can be expanded to support not only auto-enable, but also incremental roll-out (percentage of users), external system dependency management, API migrations, user interface design overhaul, etc. The possibilities are endless and having this control is a necessity in the foundation of every project.