Canary Release, and Experimentation
Canary Release (also called phased , or incremental deployment) is when you deploy your new release to a subset of servers, check it out there against real live production traffic, and take it from there — rolling it out, or rolling it back, depending on what happened. You’re basically doing the Canary In A Coal Mine thing, using a few servers and live traffic to ensure that at worst, you only affect a subset of your users. It’s not a bad approach at all, and depending on how you do this, can be quite efficient resource-wise (you don’t need an entire second environment a-la Blue-Green releases ). Mind you, the flip side to this is that you need to really careful about compatibility. You’ve got multiple releases running at the same time, so things like data versioning, persistence formats, process flows, transaction recovery, etc. need to either be forward/backward compatible, or very (!!!) carefully partitioned/rollback-able. The tri...