Canary release strategy vs. Blue/Green

blue-green-deploymentcanary-deploymentdeploymentproduction-environmentrelease-management

My understanding of a canary release is that it's a partial release to a subset of production nodes with sticky sessions turned on. That way you can control and minimize the number of users/customers that get impacted if you end up releasing a bad bug.

My understanding of a blue/green release is that you have 2 mirrored production environments ("blue" and "green"), and you push changes out to all the nodes of either blue or green at once, and then use networking magic to control which environment users are routed to via DNS.

So, before I begin, if anything I have said so far is incorrect, please begin by correcting me!

Assuming I'm more or less on track, then a couple of questions about the two strategies:

  • Are there scenarios where canary is preferred over blue/green, and vice versa?
  • Are there scenarios where a deployment model can implement both strategies at the same time?

Best Answer

I have written a detailed essay on this topic here: http://blog.itaysk.com/2017/11/20/deployment-strategies-defined

In my opinion, the difference is whether or not the new 'green' version is exposed to real users. If it is, then I'd call it Canary. A common way to implement Canary is regular Blue/Green with the addition of smart routing of specific users to the new version. Read the post for a detailed comparison

Blue/Green: enter image description here

Canary: enter image description here

Related Topic