Canary deployment: What is it, how it’s used, and what are its benefits?

Birds! That’s probably the first thing you thought about when talking about canary deployment. Yes, it’s true that the inspiration behind this technology actually came from canaries. But in software development, it implies a different thing and is used for different purposes.

Origins

In a nutshell, canary deployment is a technique in rolling out software or system updates and releases gradually to a subset of servers and users. Software developers do this to control the risk of the update. This is their way of making sure only a small number of users or servers will be affected should the change go awry.

The idea comes from the practice used in the mining industry. In the past, miners release canaries over the pit to measure the toxicity level of the area. The presence of toxic gases would affect the birds first before the miners. And miners can tell if the area is unsafe if the canaries show signs of distress. For some reasons, British mines stopped using this technique in 1987. Check it out at kublr

Usage

In software development, canary deployment serves the same function. A new software version is launched to a limited number of users first. The developers will monitor the change and make updates before rolling out the version to the entire infrastructure.

Making incremental code changes through canary releases is one of the best features of container orchestration tools. Why so? For enterprise apps with billions of users around the world, it’s too risky to roll out an update for public use. What’s most practical is to introduce the version to a subset of users first. The deployment process has three basic phases:

  1. Launch the update to one or more canary users or servers
  2. Test, monitor, and wait until the results are satisfactory
  3. Launch to the remaining users or servers

These phases could also be done in three approaches–automation, manual testing, and via a live server. Whichever approach you plan to do, make sure it’s carefully laid out.

Benefits

Today, the use of containerised software development and deployment brought massive benefits to businesses. Specifically, canary releases via different container orchestration platforms, such as Kubernetes vs Docker Swarm, can produce the following benefits:

  1. Provide value to customers in less time
  2. Collect customer feedback faster
  3. Allows the developers to fix problems and improve features faster
  4. Reduce time-to-market
  5. Boost the morale of developers with the division of tasks and workloads
  6. Low-risk performance monitoring and testing
  7. Ease of rollback when there’s a need to debug
  8. Ease of doing A/B split testing different versions of a software

Lastly, an important thing to take note is the fact that the canary release is an integral part of container orchestration platform, such as the Kubernetes architecture diagram. This feature affords entrepreneurs and developers a safer way to make software updates. Take time to see what happens. Do some debugging. And make the final release available to everybody. At Kublr, it has been the company’s goal to provide business owners with Kubernetes solutions, including canary deployment and other related services. For more information, visit their website at: https://kublr.com/blog/canary-releases-on-kubernetes-with-spinnaker-istio-and-prometheus-2/