Canary Deployments: For monitoring test deployments on a small percentage of servers before scaling the changes to the rest.
- When would I use it?
When testing a new batch of code or deployments that may or may not break your servers, it should be good practice for developers to push the code to a small subset of canary servers for monitoring. When satisfied with the code’s viability, developers can then deploy the code to the rest of the servers. In contrast, if the deployments break the canary servers only those servers are affected and we limit any downtime your users may experience.
This is best done with immutable infrastructure already deployed, as any issues can be effectively ripped out and replaced with new instances.
- How does the testing work?
After you successfully deploy to canary servers, you can then run automated or manual tests as well as allow the server to be deployed live for users to interact with. We recommend multiple scaling tests: 1% to 10%, then to 25%, then to 50% and so on because minor issues may balloon out of control when scaled.
If the manual tests or users encounter errors you can take the servers down and review the audit logs. This type of testing allows your users to have continuous access to other live servers and experiencing minimum downtime.
- How would this work within Spinnaker?
Spinnaker is currently able to utilize Canary Deployments when configured with a pipeline to do so. There will be an update in the future that ships Canary Deployments with Spinnaker itself.