TL;DR
Quick introduction to what is blue-green deployment with some useful links at the end
Preamble
Some time ago my team lead told me to prepare a document about "0 downtime" deployment for developers usage. I knew something about it and thought that it would be easy task for me, but after some research I understood that it was about an endless rabbit hole. And if you want to implement "0 downtime" deployment you need to be very very cautious and better double-check everything. This post is just a warning for you my dear friend.
Blue-green deployment
I will not lie to you. It is the only technique I know, so let's check its basic idea. Martin Fowler article
Blue-green deployment is an application release model that gradually transfers user traffic from a previous version of an app or microservice to a nearly identical new release—both of which are running in production.
The old version can be called the blue environment while the new version can be known as the green environment. Once production traffic is fully transferred from blue to green, blue can standby in case of rollback.
© RedHat
Sounds pretty easy, but the hardest part of this it is making incompatible changes in compatible way (remember that you try to run previous and current version at the same time). So wherever you have separate layers you need to think about compatibility (client-server, server-database, etc.)
I will not give you any practical advice, because I have only theoretical knowledge about this topic yet. So check more experienced authors by the links below.
Useful materials
- Blue-green deployment @ Martin Fowler blog
- What is blue green deployment? @ RedHat blog
- Zero Downtime Deployment with a Database @ Spring Blog
- Zero downtime deployment with Kubernetes, Spring Boot and Flyway @ DevOps Days YouTube
- Safe Operations For High Volume PostgreSQL @ braintreepayments
- Zero-downtime Postgres migrations - the hard parts @ gocardless
Afterword
Hope this post was useful for you guys. Feel free to share any feedback or thoughts.
Top comments (0)