Companies use "Canary Deployments" to test software in production by routing a subset of users to new functionality as part of continuous delivery according to Nolio in their 1st video in a series about DevOps Best Practices. A "Canary Deployment" is a type of incremental release performed by deploying a new version of software side by side with its production version counterpart. Running multiple versions of a software product side by side requires the software to be specifically designed for that configuration and flawless deployment automation.
Overcoming the technical challenges involved in "Canary Deployments" will reduce the risk in the deployment process, allow for A/B testing and pre-emptive performance testing. A/B testing allows for new features to be tested without changing the user experience for the majority of users. The performance testing likewise would have a negligible affect on the user base as a whole.
- Stage artifacts for deployments, including: build artifacts, test scripts, config files, and deployment manifests.
- Remove "Canary" servers from load balancing.
- Upgrade "Canary" application (drain and deploy).
- Automated testing of application.
- Restore "Canary" servers to load balancing (connectivity and sanity checks).
- Upgrade the rest of the servers if the "Canary" testing with live usage is successful. (Otherwise rollback)