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.
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.
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.
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.