A canary release is a strategy for incrementally releasing new versions of an application or service to a subset of users to mitigate the risk of failure. As any update to an application presents a risk of failure, a canary release ensures that any failure during the canary process impacts a subset of users.
A few factors are important for a canary release strategy to be effective:
Creating an exact copy of production in a staging environment is increasingly difficult as cloud applications grow in complexity. The dynamic nature of rapid updates, dependencies on other cloud infrastructure, and configuration differences all conspire to make staging an inexact copy of production. Thus, testing on staging, while important, cannot cover every single test case that would be encountered in production. Canary releases helps mitigate the risk of actually releasing software to production.