icon
approach / Principles

Decouple code deployment from feature release

Many organizations practice releasing and deploying code at the same time, which makes deployment risky. Without testing your code in a production environment prior to release, there is a significant increase in the risk that something might go wrong after release.

Deployment is the process of putting code into a specific environment, which is performed by a technical team.

Release is a business decision to initiate a process for alerting and opening access for users to new features with which they can interact.

If a team has the ability to decouple deployment from release, they can push code wherever they want without exposing it and impacting users. This allows you to run the necessary tests in a production environment and reduce risk at release.

This teamwork principle works well with continuous integration and continuous deployment techniques. According to which the build, test and deployment processes turn into an automated system. By using these techniques, the entire process can be broken down into several stages, which can shorten the entire feedback loop and automate repetitive tasks. This significantly speeds up the software release process.

Benefits from decoupling code deployment from feature release

  • The team hides from users the code on which the work has not been completed yet.
  • The team can safely test the code in a production environment with no release impact.
  • The ability to release a feature to the least risky group of users in the first place and gradually add it to other groups.
  • The ability to simply cancel the release of code for certain groups of users if something goes wrong.

Tips for working with decouple code deployment from feature release

Use feature flags

A feature flag (also called a feature switch) helps DevOps target customer needs by enabling (revealing) or disabling (hiding) in the solution they are developing, even before release. Feature flags make development faster and safer because it allows you to quickly iterate over a production deployment.

The new approach allows for testing new features on a subset of loyal customers. No matter how much testing you do in lower environments, something unexpected usually comes up in production which you can’t prepare for due to volume issues, edge cases or environment issues so feature flags helped us a lot.

Work in small batches

By using these techniques, the entire process can be broken down into several stages, which can shorten the entire feedback loop and automate repetitive tasks. This significantly speeds up the software release process.

Work on riskiest things upfront

When you work on the riskiest things upfront, that buys you time in case you need to change your decision later on. Basically, you hedge risk on a technology decision by buying yourself more time. This approach serves to reduce risks in the software development process by working with them early in the development phase.