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:
A sufficient amount of user traffic must be available such that diverting a small percentage of traffic still results in a meaningful canary. For example, if an application receives only 100 visitors a day, diverting 1 visitor to the canary is unlikely to produce meaningful data. Conversely, if an application receives 10M visitors a day, then 100,000 visitors would likely produce a meaningful amount of data.
Strong observability and monitoring systems. Canary releases can uncover issues that cannot be easily discovered in testing -- if there are strong observability and monitoring systems in place to detect errors.
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.