Separating environments with feature flags

You have two or more environments and versions of your application, but you do trunk-based development, so you only have a single branch that you use on all environments.

But if all environments have the same code, how can we have differences between them?

What if we want a feature enabled on one environment and not the other?

Feature flags

Feature flags are an approach I've previously written about. You have two branches of logic within your code, and the flow changes based on whether a flag is enabled.

If a flag is enabled, execute the first block of code. Otherwise, execute the second.

Now, you enable and disable the required feature flags for each environment.

The code is the same for all environments, but the enabled features and functionality are different.

Then, once the feature has been deployed and released in production, the feature flag can be removed.