Do Canary deployment code need to be tested in lower environments?

2/16/2019

I recently came across this canary deployment process, it is said

Canary deployments are a pattern for rolling out releases to a subset of users or servers. The idea is to first deploy the change to a small subset of servers, test it, and then roll the change out to the rest of the servers. The canary deployment serves as an early warning indicator with less impact on downtime: if the canary deployment fails, the rest of the servers aren't impacted.

Some articles mentioned *it is TEST IN PRODUTION * strategy.

Does this mean the code is not being tested in lower environments ( integration and performance testing)? If yes, how could without code confidence these deployments are roled out ?

Please clarify me. Thanks in advance

-- pavan reddy
canary-deployment
continuous-deployment
deployment
kubernetes
spinnaker

1 Answer

2/16/2019

Canary deployments are a way of gradually opening the requests firehose to a new server while continuing to respond to the majority of the requests with an already-deployed service. So yes, it is really a "test in production" strategy, but the idea is that if the canary falls over you don't deploy to to the whole cluster.

The name comes from the idea that coal miners used to carry canaries, who are rather more sensitive than humans to the effects of carbon oxides (the monoxide is both toxic and potentially explosive, the dioxide will suffocate you if it excludes enough oxygen). If the canary keeled over the miners knew it was time to high-tail it.

-- holdenweb
Source: StackOverflow