Deployment Types

Abstract

In this article, we are going to look into deployment strategies, different types of deployment, and their usage. 

Agenda

  • What is a Deployment 
  • Deployment Strategy
  • Deployment Types
    • Blue/Green Deployment
    • Canary Deployment
    • Recreate Deployment
    • Ramped Deployment
    • Shadow Deployment
    • A/B Testing Deployment

What is Deployment

Once we developed our software in a development phase, we suppose to make this a shippable or deployable product. Once the product is ready for deployment from the engineering department, the deployment process kick-starts. While the deployment phase piles up, we need to look at or address into following questions ourself

  • Deployment downtime
  • New Application Launch ( will discuss in a separate session )
  • Rollback mechanism
  • Deployment Support
  • Manual / Automation 

Deployment Strategy

A deployment strategy is one in which DevOps teams need to launch or upgrade the application with resilience, in other words, we can say without much disturbance of business, so live deployment date suppose to go as BAU day, not like a football match :)

Deployment Types

Blue/Green Deployment

  • New Version is available along with the current version, which means if you have 10 servers, 5 may have a new version and 5 servers may have an old version.
  • Stable or Current Version we called it Blue
  • New Version is known as the Green 
  • Once the feature is certificated by Quality Team, we have to route it to Green Version from the load balancer. 
  • If there is any issue, again we can roll back or route back to a stable version from Load Balancer Configuration, So it's flexible to switch from Blue to Green or vice versa.
  • The major disadvantage of this scenario is the cost because we need to run old and new versions concurrently. 

Canary Deployment

  • Gradually shifting new versions into servers from 1 server to multiple servers.
  • Initially, 80% or most of the requests directs to the old version and less or 20% of requests are forwarded to the new version.
  • This strategy is used to test the stability of the new version, while customers using the application.
  • It also enables a faster rollback mechanism, because of the gradual deployment
  • The major pitfall here is the time-consuming process

Recreate Deployment

  • kind of extended legacy approach
  • Deployment downtime window option
  • Mainly used when a premises want to change the application from scratch
  • It does not have any changes on Load Balancer
  • Since it leads to downtime and mostly this case is not recommended approach unless we have no other options

Ramped Deployment

  • This is again a gradual deployment strategy however it replaces old with new instances one at a time. 
  • Once all instances are replaced with a new, older version system will shut down, so all traffic forwarded to the new version
  • It gives zero downtime since its upgrades gradually instance by instance
  • The issue which see over here is if we want to rollback, again this strategy will do the same mechanism, it will downgrade from the new to the old version by instances

Shadow Deployment 

  • The main focus of this strategy is to monitor the new version's performance and stability.
  • It's expensive and complex to setup
  • Will do the deployment of both the new and old versions, however, the end user is unable to access the new version directly.
  • Behind the scene, the engineer will set up an environment such as forking the old system request and ingesting to the new version to test the new version system.

A/B Testing Deployment

  • Both the new version and old version deployed simultaneously.
  • The new version is available only for a few users, such as based on a few conditions, such as a specific location, a specific type of user, a device and OS based, etc.
  • It uses to measure a particular area, eg. if our recent changes are only for the Android version, so we can measure easily with this deployment approach.
  • It has rollback features by just disabling the rule parameters
  • This strategy enables a collection of statistical data to go forward to take the right decision.
  • Required good load balancer.

I hope you got some ideas about different types of deployment strategies. Each strategy has its own pros and cons, and we need to see, what our use case is and which strategy suits our own business. Overall this deployment strategy is used to enhance the deployment process smoother and more resilient. Hope will look into another article soon...


Similar Articles