Apps Development, AWS, Cloud Computing

6 Mins Read

Enable or Disable Functionality without Deploying the New Code Using Feature Flag

Voiced by Amazon Polly

Introduction

A feature flag is a development process/ pattern used to enable or disable functionality ever without planting code. It’s the way to control the behavior of your software or application without needing to redeploy or change the code.

Feature flags allow the release of a new feature in your platform with zero downtime. We can control this feature flag with the help of configuration files, or it can be more remote for example you can use a service like azure app config.

Feature flags may be used to perform a “soft rollout” of new product features. New features can be quickly integrated and built into feature switches as part of a planned release. Feature flags can be set to “off” by default, so after deployment, the code will remain dormant in production, disabling new features until a feature switch is explicitly enabled. The team then decides when to turn on the feature flag. This activates the code so the team can perform QA and make sure it’s working as expected. If the team finds a problem during this process, they can immediately turn off the feature flag to disable the new code and minimize user exposure to the problem.

The feature flag can be used to isolate new changes while preserving known stable code. This allows developers to avoid long-running feature branches, which are often locked into the main branch of the repository behind feature toggles. Once the new code is ready, you don’t need disruptive collaborative merge-and-deploy scenarios. Teams can toggle feature flags to enable new systems.

In its simplest form, a feature flag acts as a toggle between the “on” and “off” states of a feature. When a developer launches a new product feature, they create a corresponding new Git branch that contains all the code for the new feature, unlike the main branch. When a developer completes a new feature, they merge the feature branch into the main branch and deploy it. Feature branches are different from feature flags.

Feature flags are allowed on feature branches. To create a feature flag, a developer creates a feature branch and commits a new feature flag code to the feature branch. After instrumentation, the feature branch is merged and deployed, and the feature flag is accessible in the production.

Customized Cloud Solutions to Drive your Business Success

  • Cloud Migration
  • Devops
  • AIML & IoT
Know More

What kind of things can go wrong during a deployment, where a feature flag can help?

These are some examples:

  • Changing database queries can slow down existing functionality.
  • Changes in the logic of existing features can produce unexpected behavior, edge cases not considered, and more.
  • Changes in how we store or process information, such as saving new columns in the database can accidentally start inserting invalid values or generate too many writes to the database.

Cons of Feature Flag

  1. Feature switches introduce additional complexity to your code by adding additional conditions and behavior variations, or by adding additional routing rules and configuration logic.
  2. Feature switchers with multiple components significantly increase cognitive load. Thinking about two or more components and how their different configurations interact is much more difficult than thinking about a single component.

         Combinatorial explosion:

  1. Once teams start using feature toggles, sooner or later there will be many. I highly recommend managing some features, so you know when to remove specific toggles and appropriate code and tests.
  2. Another nasty effect of multiple feature toggles occurs when they start interacting. You could end up in a combinatorial explosion situation of state switching. Effectively, you are creating a multitude of system configurations. Having automated tests for each configuration becomes much harder.
  3. When you have a lot of feature toggles, but you are not sure you can turn it off anymore, will the application still work? In that situation, you are kind of dependent on a certain state of that toggle, and when that time comes then there’s a time to start cleaning up that and remove the dead code and make sure that you kind of only execute the code that you want to execute.

Cost of Feature Flag

  • As we have seen, using feature flags extensively changes the way we work and requires a bit of additional planning and coordination. But there are also additional costs associated with feature flags that we need to keep in mind. First, we have a runtime cost. When we check if a feature flag is enabled to an actor, we need to first load the metadata information of the flag, which is stored in MySQL but cached in Memcached. We are currently looking at keeping feature metadata and the list of actors in memory all the time to reduce this overhead. There is one exception to this. Some feature flags are considered “large”. An example of this was GitHub Actions, a feature that we rolled out to tens of thousands of users every week. For these large feature flags, when they are still not fully enabled, we need to do a per-actor query to MySQL to check if the actor is in the list of enabled actors.
  • For runtime, there’s also a cost in the form of technical debt. Once a feature flag is fully enabled, it leaves a lot of dead code and old tests in the repository that needs to be deleted. Usually, we do this manually after a feature has been rolled out for a few days or weeks depending on the case. But now we are automating the process. We have created a script that can trigger and call the workflow locally or manually.

Testing Feature Flag using 2 Products

Here, I have used one product named Flagsmith it’s a feature flag service that also has an open source version we can host on our own.

Here I have created the “show_landing_page” feature-flag and made it off by default.

FF1

So, in the UI I’m just showing the data which is the stories:

FF2

Here is another product called Optimizely’s quick start guide for Full Stack React SDK

Firstly, I need to install the SDK in react application with the command

npm install –save @optimizely/react-sdk

After that, below image, you can see the SDK key that you need to enroll in your react code

FF5

Here we can see the SDK key I have pasted

FF6

We can see the flag optimizely turned off so as per the react code we can see the changes in the UI and as we make it turn on the UI will change again as per the condition of the code

FF7

FF8

Output:

FF9

FF10

Here are some useful links to know more about Feature-Flag:

  1. https://www.atlassian.com/continuous-delivery/principles/feature-flags
  2. https://harness.io/blog/get-started-feature-flags
  3. https://github.blog/2021-04-27-ship-code-faster-safer-feature-flags/

Conclusion

Feature flags are a valuable tool for developers to manage the rollout of new features in their software. They allow developers to easily toggle features on or off, without the need to deploy new code. This can be useful for gathering feedback, disabling features with bugs, conducting A/B testing, and allowing certain users or user groups to access features before they are released to the public. Overall, feature flags can help developers to manage the deployment of new features more effectively and can help to improve the stability and performance of their applications.

Get your new hires billable within 1-60 days. Experience our Capability Development Framework today.

  • Cloud Training
  • Customized Training
  • Experiential Learning
Read More

About CloudThat

CloudThat is a leading provider of Cloud Training and Consulting services with a global presence in India, the USA, Asia, Europe, and Africa. Specializing in AWS, Microsoft Azure, GCP, VMware, Databricks, and more, the company serves mid-market and enterprise clients, offering comprehensive expertise in Cloud Migration, Data Platforms, DevOps, IoT, AI/ML, and more.

CloudThat is the first Indian Company to win the prestigious Microsoft Partner 2024 Award and is recognized as a top-tier partner with AWS and Microsoft, including the prestigious ‘Think Big’ partner award from AWS and the Microsoft Superstars FY 2023 award in Asia & India. Having trained 850k+ professionals in 600+ cloud certifications and completed 500+ consulting projects globally, CloudThat is an official AWS Advanced Consulting Partner, Microsoft Gold Partner, AWS Training PartnerAWS Migration PartnerAWS Data and Analytics PartnerAWS DevOps Competency PartnerAWS GenAI Competency PartnerAmazon QuickSight Service Delivery PartnerAmazon EKS Service Delivery Partner AWS Microsoft Workload PartnersAmazon EC2 Service Delivery PartnerAmazon ECS Service Delivery PartnerAWS Glue Service Delivery PartnerAmazon Redshift Service Delivery PartnerAWS Control Tower Service Delivery PartnerAWS WAF Service Delivery PartnerAmazon CloudFront Service Delivery PartnerAmazon OpenSearch Service Delivery PartnerAWS DMS Service Delivery PartnerAWS Systems Manager Service Delivery PartnerAmazon RDS Service Delivery PartnerAWS CloudFormation Service Delivery PartnerAWS ConfigAmazon EMR and many more.

FAQs

1. How do feature flags work?

ANS: – Feature flags work by introducing a code-level switch that can be used to toggle a feature on or off. This switch is usually controlled by a configuration file or a database, which allows developers to easily turn features on or off as needed. When a feature is turned off, the code related to that feature is not executed, and the feature is not visible to users. When a feature is turned on, the code is executed, and the feature is available to users.

2. Can feature flags be used in any type of software?

ANS: – Feature flags can be used in any type of software, including web applications, mobile apps, and desktop applications. They can be especially useful in cases where a feature is not ready for release, or if a bug is discovered after a feature has been deployed.

3. How do you implement feature flags in your software?

ANS: – To implement feature flags in your software, you will need to add a code-level switch that can be used to toggle the feature on or off. This switch should be controlled by a configuration file or a database, which allows developers to easily turn the feature on or off as needed. You will also need to wrap the code related to the feature in an if-statement that checks the value of the feature flag. If the feature flag is set to true, the code will be executed; if the feature flag is set to false, the code will not be executed.

WRITTEN BY Sneha Naik

Sneha works as Software Developer - Frontend at CloudThat. She is a skilled Front-end developer with a passion for crafting visually appealing and intuitive websites. She is skilled in using technologies such as HTML, CSS, JavaScript, and frameworks like ReactJS. Sneha has a deep understanding of web development principles and focuses on creating responsive and user-friendly designs. In her free time, she enjoys staying up to date with the latest developments in the industry and experimenting with new technologies.

Share

Comments

    Click to Comment

Get The Most Out Of Us

Our support doesn't end here. We have monthly newsletters, study guides, practice questions, and more to assist you in upgrading your cloud career. Subscribe to get them all!