Blue Green Deployment
Continue Integration Strategy
The Blue/Green deployment is when release engineering stages up a new instance of a production environment and they slowly move traffic to the new instance. Once the traffic is 100% on the new environment the old one gets taken down.
This is usually done to implement a zero-downtime deployment. Configurations to get this done is usually done using a Loadbalancer.
Some QA Notes About This
Production Only Many organizations will not put a Blue/Green deployment in the staging environment - usually because of cost and other logistics. This adds some risk to the release as QA isn't able to test the changeover.
Real World Example
We have several automation scripts that run at each release to test critical featured that have broken in the past during production deployment. We are at "All Hands on Deck" at release time.
Downtime may still be needed. There has been times when we had to do a major database upgrade and the Blue/Green deployment makes the process more complex than it needs to be. In those times, we alerted customers of the downtime - usually off hours and put together a plan to minimize the downtime.
Real World Example
Whenever we do a major database change, we would schedule some downtime for backup and as a precaution. An example of a major change would include a DB upgrade.
Patching Still Possible! You can still implement code patches in the Blue/Green model. The developer needs to commit the code change to "master/main" so that it gets implemented in the next release. We found that JavaScript changes were harder to patch than "basic" code changes.
Real World Example
Unfortunately we did a lot of patching. They would be easy to implement. In most cases, the Developer would have to provide a diff of their changes against the current production build. The infrastructure team would be responsible to update the code on the servers.
Safe Production Testing There might be times when you need to test certain features in the Production environment. Using the Blue/Green Deployment the Infrastructure team can load up an instance but not make it public. QA can go through a specific URL to test before the stack is live.
Real World Example
There are some third party changes that may not be testable in a QA environment. We had an API change that depended on the URL/Domain and testing some functionality wasn't possible in the QA or Staging environments.