×

Search anything:

9 Different Types of Deployment Strategies

Binary Tree book by OpenGenus

Open-Source Internship opportunity by OpenGenus for programmers. Apply now.

  1. Introduction
  2. Blue Green Deployment
  3. Rolling Deployment
  4. Continuous Deployment
  5. Canary Deployment
  6. Shadow Deployment
  7. Big Bang Deployment
  8. Recreate Deployment
  9. Ramped/Rolling-Update Deployment
  10. Incremental Deployment

Reading time: 15 minutes

Introduction

Deployment strategies are used in software development to successfully implement and upload newly updated versions of software. The type of strategy used depends on the complexity of the application, the main objective, the urgency of the update, and the level of expertise the team working on the software update possesses. Deployment requires plenty of monitoring and team collaboration, so it is a strategy that is well-calculated and planned out.

Let's discuss the different strategies that software development teams utilize such as:

  • Blue Green deployment
  • Rolling deployment
  • Continuous deployment
  • Canary deployment
  • Shadow deployment
  • Big Bang deployment
  • Recreate deployment
  • Ramped/Rolling-Update deployment
  • Incremental deployment

Blue Green Deployment

Blue Green Deployment is a deployment strategy that consists of maintaining two separate but identical environments:

  • a blue and
  • green

The blue environment contains the current software model while the green acts as an inactive yet identical copy used for testing the new version of the application. First, the blue and green environments are set up for deployment.

The green environment is tested for any bugs or issues to be corrected. Once the testing has been completed and the new version is ready for launch, user traffic is directed from the blue environment to the green to allow for a seamless transition. If issues occur post-release, user traffic is redirected back to the blue environment.

Therefore, Blue Green deployment can be particularly beneficial for programs that must be readily available to users with little to no downtime between updates.

Rolling Deployment

Rolling Deployment is a strategy in which the software is gradually updated or "rolled out". The process involves:

  • Creating a sequential list of servers and instances in which the new updates will be deployed
  • Testing each server before continuing to the next
  • Process continues until each server in the list has been updated and tested

This strategy isolates problems to individual servers or instances. Rolling deployment is often used in large-scale systems that require zero downtime such as banks. This strategy allows for the user experience to go uninterrupted and avoidance of big issues with the program affecting the entire platform since it is released gradually to separate servers.

Continuous Deployment

Continuous Deployment is used to automatically and continuously update the code base in a program. This method utilizes tools that automatically write and test code depending on the needs of the system.

Continuous integration tools are used to monitor the code and decide when to write new code. Instead of performing manual testing on the new updates, automatic tests are created. Automated testing reduces the risk of malfunctioning code from being deployed, which in turn lowers the roll back rate. Once all tests are passed, the updates are preprogrammed to deploy on their own.

Continuous deployment is used in environments that require frequent yet quick updates with much less manual involvement.

Canary Deployment

In Canary Deployment, a software update is deployed to a small subset of users for testing and feedback before rolling the update out to all users. Because the behavior of the program can be monitored in a real-world environment, this reduces the risk of potential issues arising after release. Gaining user feedback also helps the company or organization creating the software to make more educated decisions on what to include in updates.

Canary deployment is used for platforms that desire user feedback from customers such as e-commerce websites like Amazon.

Shadow Deployment

Shadow Deployment consists of deploying the new software version along with the current version, allowing the user experience to be completely unaffected in the process. The new version acts as a "shadow", replicating the original without any user traffic.

The shadow system is tested by replicating data that is sent to both the shadow and the original environment. Next, a comparison is made between how each version processes data in which the affects of the update can be analyzed and understood. Contrasting the performance of each system can help further optimize the execution of the program.

Overall, this deployment strategy is perfect for scenarios where performance optimization and minimizing risk are huge priorities when testing new software.

Big Bang Deployment

Big Bang Deployment strategy is when the new version of an application completely replaces the old one with no transition between the two. Like a big bang, the update is a single, explosive event that simultaneously replaces the old program for all users.

Before release, the new program is tested to make sure there are no bugs or issues with the code. Once the code has been tested and is ready for release, all users are migrated to the new version. Usually, maintenance time is set aside for the update to release. During this predetermined period, users will not be able to access the software at all until the transition is complete. For deployment to be successful, a huge amount of planning and communication must occur between development teams.

Big Bang deployment is usually utilized in situations where downtime is not an issue such as game development. Developers can select a scheduled maintenence period in advance and notify all players.

Recreate Deployment

Recreate Deployment consists of completely replacing the software instead of introducing small updates. It is referred to as an "all or nothing process". This method minimizes risk of issues after release since it can be thoroughly tested beforehand.

In situations where an applications current infrastructure cannot handle a significant amount of user traffic, recreate deployment can be very useful because it allows for the creation of an entirely new environment designed to handle the increased traffic.

Ramped/Rolling-Update Deployment

Ramped/Rolling-Update Deployment involves seperating the software infrastructure and updating segments incrementally. Risk and user distruptions are both minimized since each component is upgraded and tested gradually.

Applications such as large e-commerce systems that desire zero interruptions in the customers shopping experience could benefit from utilizing this strategy.

Incremental Deployment

Incremental Deployment is used to incrementally applying changes to a system that build on top of eachother. The program is tested at each step to minimize errors and user feedback is gathered so fixes can be gradually implemented.

This strategy works great for mobile app development where developers can gather user insight and add those changes incrementally.

Jessica Janko

Jessica Janko is a third-year undergraduate at the University of Connecticut pursuing a Bachelor's in Computer Science with a curiosity in software development and cybersecurity.

Read More

Improved & Reviewed by:


OpenGenus Tech Review Team OpenGenus Tech Review Team
9 Different Types of Deployment Strategies
Share this