DevOps Deployment Strategies
Tags: devops, kubernetes, codenewbie
Published: 2021-02-28 17:54:30

<i>When there's software, there are deployment strategies. Organizations develop various plan - of - action and follow different deployment methods, ultimately aiming to achieve their constructive business goals. However, we have a few most talked about DevOps strategies that shoot the automation levels to their next step. We shall have a brief explanation of different deployment strategies here.</i>


<br><h2>Recreate Deployment</h2>

<br>The Recreate Deployment strategy works almost like a traffic signal. It stops the ongoing application's version deployment, deploys a newer application version and changes the course of the application. This diversion towards the latest version is lead by the Load balancer. Depending on the size and type of application, this technique takes about a few minutes and is simple to handle also renews all the applications' state.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5ibontjlcu5wpcme26b.gif)

<br><h2>Ramped Deployment</h2>

<br>The deployment strategy follows an array approach in deploying a newer version. For example, if a Kubernetes has more than 2 clusters operating, a new version of a Cluster is deployed by shutting down the instances of previous versions one-by-one. Hence it is also termed as Rolling Update Strategy. Since the steady release of instances in the version, it is easier for applications to take care of data rebalancing. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/787jgavku7nfkxhyfg0t.gif)

<br><h2>Blue/Green Deployment</h2>

<br>Parallelism plays a crucial role in the Blue/Green deployment. An up to date version will be created in parallel with the old one. The instances of the cluster are processed for further testing. Once the testing results scores a top card, the previous version is replaced by the new one.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ye42l36echbk0pdkc7r9.gif)

<br><h2>Canary Deployment</h2>

<br>The production deployment carries off a gradual rollover from an older to a newer version of the cluster, when we have no tests performed. Canary deployment pays attention to the performance, though the slow re-roll of the instances is a factor.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kd71tf1q7kyaf6zdglmc.gif)

<br><h2>A/B Deployment</h2>

<br>Are you looking to test the application for mobile users? A/B Deployment strategy would serve as a better choice. We can refer to this more like a sister of Canary deployment, yet has its uniqueness while deploying the mobile apps and conditionally differ in version bottleneck concerning geolocation, language, browser version operating system, etc. Analogous version deployment and an absolute command over the bottleneck distribution are eye-catching advantages. However, we do have a rough time troubleshooting the errors and effective load balancing.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jdnizmc0stq1897b0cit.gif)

<br><h2>Shadow Deployment</h2>

<br>As the name goes, one deployment version shadows the other. When we have an incoming request for the first version, the traffic can be redirected to the second version. Sounds cool for a new feature deployment and performance testing right? Nevertheless, there's no deployment happening until the stability and performance is met. The complexity of the setup impacts the wallet and also requires a mock service in certain cases.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/imn08vupkyc9vcrlpq87.gif)

<br><i>Choosing the right deployment for your task requires a thought. In common scenarios, during staging or development, Recreate or Ramped deployment is recommended. While during the production, Ramped or Blue/Green deployment is a good choice. If you want to migrate a new database technology, then Shadow deployment can check your priority list. In case of lacking test, Canary or A/B deployment can be your alternative.</i>



<center><div><table class="bottomBorder"><tr><td><a href="https://gitlabcbe.substack.com/">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hplp6opfpywirwur2vmz.png "Official Website")</a></td><td><a href="https://twitter.com/GitlabC">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/00qhd8v9ma2t2l2xv4xh.png "Twitter")</a></td><td><a href="https://www.meetup.com/GitLab-Meetup-Coimbatore/">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/aqq6pi897bk687d3kwwa.png "Meetup Community")</a></td><td><a href="https://www.linkedin.com/groups/8955040/">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8u4886rik46g1bvvrx8d.png "LinkedIn")</a></td></tr></table></div><center>![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/btpzfoja85ps8d28nx7c.png)