A good start to definitions. I think this will also help in deciding your strategy if you divide the definition of release into deployment and release (functionality).
Deployment (binaries)
The binary deployment action of your product on a (production) system.
Release (functionality)
Functionality management action for (groups) users.
Why? You usually have (several) two problems when "releasing": 1) Errors / backward compatibility / etc. 2) Validation / usability of new features
Then ask yourself before choosing a canary, blue-green, or any other gray / mixed mode strategy: what problems do we face when releasing / deploying a new version? And only then, if you know your problems, choose your strategy.
In addition, more complex deployment / release strategies can be implemented. For example, in some clouds / infrastructure you can have several production servers and transfer the load in different proportions to different servers and versions of your product, as well as control reliability before scaling the release / deployment for all users.
Feature Labeling
The action "setting" (cold or even hot), which functions are (not) available for (group) users
If you also do something like "function labeling", you can first expand, measure the reliability of your release in terms of backward compatibility / errors and gradually release new functions for different users or vice versa (reduce or even decrease the rollback functionality and / or binary files.). Labeling functions allows you to separate the availability of functionality from the deployment of binary files and gives a much more detailed decision-making than just "deployment / rollback"
Roland Roos Mar 11 '19 at 13:02 2019-03-11 13:02
source share