Deployment vs release
Traditionally, software teams deploy and release code changes at the same time: as soon as the code is deployed to servers, it's released to users. Developers test before release by deploying the changes to a staging server which is only accessible to testers. When software teams deploy and release at the same time, they can't test in production.
Although they often happen at the same time, deployment and release are different:
- Deployment: the loading of code onto the servers where it will run
- Release: the availability of code changes to users
In this lesson, you'll change a game's theme and title by editing the code and changing the graphics the app loads. You could do this by simply changing the graphics references and saving the code. If your app had other users, they would all see the new graphics as soon as you saved and deployed the code change, with no chance for you to test the change first.
But what if you want to deploy and test the change on your main infrastructure before releasing it to all users? That's where feature flags come in.
What is a feature flag?
A feature flag is a software development technique used to enable or disable functionality remotely without changing code. It is a decision point in code with varying behavior based on external input.
Feature flags help separate deployment from release, which lets you manage the full lifecycle of a feature.
Eliminate risk and deliver value
LaunchDarkly enables development and operations teams to deploy code at any time, even if a feature isn't ready to be released to users. Wrapping code with feature flags gives you the safety to test new features and infrastructure in your production environment without impacting end users.
When you are ready to release, update the flag status, and the changes are made instantaneously by our real-time streaming architecture.
Let's begin by looking at the game you're going to change and then release with feature flags.