Togle is a simple user-interface component that can make a big difference in the experience of your users. Togles are typically used to update preference, settings, or other types of information. When implemented correctly, toggles provide direct labels, standard visual design, and deliver immediate results.
Feature Toggles are the default configuration options for a set of features, which can vary based on their context. For example, a Canary Released Feature Toggle might be exposed to a random set of test users while a Permissioning Toggle might be confined to a single cohort of premium users.
Many teams find that they have a lot of Feature Toggles and seek to keep the number of toggles in their codebase as low as possible, which is typically achieved by proactively removing toggles that are no longer needed. Some teams also place “expiration dates” on their toggles to ensure that they are removed before a new version is released.
Toggle Configuration is often stored in static files and can be managed by a range of different approaches depending on the nature of the toggle configuration and whether or not dynamic re-configuration is required. However, for a variety of reasons, static toggle configuration may not be suitable or desirable in a production environment.
Dynamic Toggle Configuration is typically managed by exposing an endpoint which allows for the dynamic in-memory re-configuration of a feature flag. This can be a very useful way to enable the dynamic configuration of toggles when used as part of an automated testing process and can avoid re-deploying a feature artifact into an environment for re-configuration, which is a very time-consuming and laborious task.
In-Memory Re-Configuration is a very powerful tool, but it can be quite tricky to manage at scale. In particular, it can be difficult to re-configure a toggle at runtime without affecting the state of an application, and so some organizations move this functionality into some type of centralized store or application DB.
This approach can be especially useful when managing Experiment Toggles which are more complex, and require re-configuration at runtime. For these types of toggles it is advisable to build out a distributed configuration system with a re-configuration interface which can support dynamic in-memory re-configuration.
Re-configuration of a Feature Toggle is often a necessary and important part of the development lifecycle, as this can be an essential way to validate the performance of the feature in a live environment before releasing it. When re-configuring a feature flag, it is important to do so as quickly and reliably as possible.
When re-configuring a feature toggle, it is also vital that it be able to be re-configured in-memory as this can be very time-consuming and cumbersome if a team needs to restart an application or re-deploy an artifact into a test environment for the change to take effect.