Automated release process by promoting to successively larger and more critical environments as we confirm that code is operating as designed.
We monitor how the software performs in each environment.
Each additional version in production increases complexity, so we have keep the number of running versions to minimum.
The cluster immune system ties canary release pattern with monitoring and by automating rollback in case performance or conversion rates deviate. The benefits of such approach are protection against defects that are hard to find using automated tests and reduced time required to react on the degraded performance.
The patterns that we implement in code.
We can switch features on and off using configuration of the application without the need to deploy again. They have also the following benefits:
To ensure we find errors in features wrapped in toggles, we must run acceptance tests with all toggles on. We also have to test that feature switch functionality works.
Feature toggles enable us to decouple code deployments and feature releases, hypothesis driven development and A/B testing.
Deploy all the functionality into production and perform testing while still invisible to the customers. We can perform calls to the new functions and just log or discard the results. This can be done for just 1% of users to ensure how these new features perform under load and fix what is necessary before the actual launch. When we finally launch, we can roll out progressively.
When we have built enough telemetry, we also enable faster feedback cycles to validate our business assumptions and outcomes immediately after deploying the feature.