Just a minor terminology clarification: this article conflates Blue-Green deployment and Canary deployment and suggests they are identical (emphasis added): "Blue/Green (or Canary) Deployment is a methodology to introduce application enhancements to a small subset of end users, and if all goes well, slowly increase the ratio until all users are on the new deployment. In case things do not go perfectly, it’s simple to just stop routing requests to the new buggy backend. This is a much safer way to introduce code changes than just suddenly pointing all users at the new enhancements."
The techniques are actually different in that detail of all users versus subset of users:
- All Users: Blue-Green deployment is a wholesale redirection of all requests from one complete environment instance (eg, Blue) to a second complete instance (eg, Green).
- Per your https://martinfowler.com/bliki/BlueGreenDeployment.html (emphasis added): "The blue-green deployment approach does this by ensuring you have two production environments, as identical as possible. At any time one of them, let's say blue for the example, is live. As you prepare a new release of your software you do your final stage of testing in the green environment. Once the software is working in the green environment, you switch the router so that all incoming requests go to the green environment - the blue one is now idle."
- Subset of users: Canary deployment is a redirection of some requests (for specific users only) to a second environment. These specific users effectively become "canaries in a coalmine" testing out new features in this second environment. This is similar to A/B testing although with different goals in mind.
- Per a https://martinfowler.com/bliki/CanaryRelease.html: "Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody."
So while there are similarities, namely that they both involve redirecting requests to an environment running new features and the ability to quickly rollback to an environment running a previous version by undoing the request redirection, Blue-Green redirects all requests whereas Canary redirects only a subset of requests (from specific users who are "canaries" - or guinea pigs).