Software Feature Flag

From GM-RKB
Jump to navigation Jump to search

A Software Feature Flag is a software development technique that attempts to provide an alternative to maintaining multiple source code branches (known as feature branches), such that a software feature can be tested even before it is completed and ready for release.



References

2023

  • chat
    • A feature flag, also known as a feature toggle or feature switch, is a software development technique that allows developers to enable or disable specific features or functionality within an application at runtime without deploying new code. Feature flags are typically implemented as configuration settings or conditional statements in the code that control the execution of certain parts of the application.
    • Feature flags offer several benefits to development teams:
      • Separation of feature deployment from code deployment: Developers can deploy new features without making them immediately available to users, allowing for further testing or gradual rollouts.
      • Gradual rollouts and controlled rollbacks: Feature flags allow teams to release features to a subset of users, enabling them to test the feature's impact and gather feedback before a full release. If any issues arise, the feature can be easily disabled, reducing the need for hotfixes or emergency releases.
      • A/B testing: Using feature flags, different versions of a feature can be released to different user segments, allowing teams to test which version performs better and make data-driven decisions about feature improvements.
      • Reduced risk: By allowing teams to release features incrementally and quickly disable problematic features, feature flags help minimize the risk of introducing new features to an application.
      • Improved collaboration: Feature flags enable better communication and collaboration between developers, product managers, and other stakeholders, as they provide a centralized way to control and monitor the release of new features.
    • Feature flags can be managed using a feature management platform like LaunchDarkly or Split, which provide tools and services to help development teams implement and manage feature flags effectively and efficiently.

2023

  • (Wikipedia, 2023) ⇒ https://en.wikipedia.org/wiki/Feature_toggle Retrieved:2023-4-19.
    • A feature toggle in software development provides an alternative to maintaining multiple feature branches in source code. A condition within the code enables or disables a feature during runtime. In agile settings the toggle is used in production, to switch on the feature on demand, for some or all the users. Thus, feature toggles do make it easier to release often. Advanced roll out strategies such as canary roll out and A/B testing are easier to handle. [1]

      Even if new releases are not deployed to production continuously, continuous delivery is supported by feature toggles. The feature is integrated into the main branch even before it is completed. The version is deployed into a test environment once, the toggle allows to turn the feature on, and test it. Software integration cycles get shorter, and a version ready to go to production can be provided. [2] The third use of the technique is to allow developers to release a version of a product that has unfinished features. These unfinished features are hidden (toggled) so that they do not appear in the user interface. There is less effort to merge features into and out of the productive branch, and hence allows many small incremental versions of software.

      A feature toggle is also called feature switch, feature flag, feature gate, feature flipper, or conditional feature.

  1. Cite error: Invalid <ref> tag; no text was provided for refs named :1
  2. How GitHub Leverages Feature Flags to Ship Quickly and Safely, infoq, 2021-05-09.

2018

  • https://www.split.io/blog/canary-release-feature-flags/
    • QUOTE: ... Canary releases (also “canary deployments”) and feature flag rollouts are two common feature release strategies for testing in the production environment, increasing the safety of continuous delivery, deploying faster and more often. Both aim to reduce the “blast radius” of unforeseen problems and build confidence in a new release. Both gradually expose new code to users on the production infrastructure. That’s about all they have in common!

      The differences between canary releases and feature flag rollouts are significant, impacting development velocity and your quality of life. Let’s consider an example to understand what you can control and how you can react when things go wrong, using each of the two strategies. ...

      ... Let’s say we are working on a service called the airline-booking-service. It lets users search for airline tickets as well as book them. Today your team is releasing two new features in this service: a bags-fly-free feature that lets travelers search for flights where bags are free and a prepay-for-bags feature that lets travelers prepay discounted fees for bags on the other flights. ...

2017

  • (Wikipedia, 2017) ⇒ https://en.wikipedia.org/wiki/Feature_toggle Retrieved:2017-11-14.
    • A feature toggle (also feature switch, feature flag, feature flipper, conditional feature, etc.) is a technique in software development that attempts to provide an alternative to maintaining multiple source-code branches (known as feature branches), such that a feature can be tested even before it is completed and ready for release. Feature toggle is used to hide, enable or disable the feature during run time. For example, during the development process, a developer can enable the feature for testing and disable it for other users.

      Continuous release and continuous deployment provide developers with rapid feedback about their coding. This requires the integration of their code changes as early as possible. Feature branches introduce a bypass to this process. Feature toggles are an important technique used for the implementation of continuous delivery. The technique allows developers to release a version of a product that has unfinished features. These unfinished features are hidden (toggled) so they do not appear in the user interface. This allows many small incremental versions of software to be delivered without the cost of constant branching and merging. Feature toggles may allow shorter software integration cycles. A team working on a project can use feature toggle to speed up the process of development, that can include the incomplete code as well.


2017b