This post is authored by Itay Shakury, Cloud Solution Architect.
In the world of devops practices and cloud native infrastructure, the concept of deployments has evolved from an uninteresting implementation detail, to a fundamental element for modern systems. It seems there's a general understanding of its importance, and work is being done to build solutions and tools for better deployment practices, but we never paused to agree and define on what are the deployment strategies that are important, and how to define them. It's not uncommon to see people use different terms for same meanings, or same terms for different meanings. This leads to other people reinventing the wheel trying to solve their own problems. We need a common understanding of this topic in order to build better tools, make better decisions, and simplify communication with each other.
This post is my attempt to list and define those common deployment strategies, which I called:
- Reckless Deployment
- Rolling Upgrade
- Blue/Green Deployment
- Canary Deployment
- Versioned Deployment
There are probably other names and terms you expected to see on this list. I’d argue that those missing terms can be seen as variants of these primary strategies.
Note: The post is about definitions, methodologies and approaches and not about how to implement them in any technology stack. A technical tutorial will follow in another post. Stay tuned!