Member-only story
The Zero Downtime Deployment
(La version Fr est diponisble ici)
Zero Downtime Deployment known by its acronym ZDD is the act of deploying a new version of your application code without maintenance or deterioration of service, most of the time when we talk about ZDD we focus on the switchover of a version N to a version N+1 without interruption of service via different strategies:
This article is focus on the ZDD from the application code side, if as a developer we do not necessarily have control over the deployment scripts and the chosen strategy, we must still ensure that our application is 100% functional and that even if the deployment fails or takes a lot of time, I will take 3 classic cases:
I was saying that the ZDD is the fact of deploying without maintenance,
YES, no more releases in production at dawn 🐓 or dusk 🌃.
We deploy at any time 😍.
⚡️ Releases must be transparent for end users and to achieve this, it is necessary to ensure that the modifications made are compatible with the current version.
💡 When you’re doing ZDD the easiest way is to modify your database before your application code.
If you look closely at the diagram, you can see that there is a period of time when the code in production (version N) lives with the database (version N+1).
This time can be fast if you have few migrations but it can also be long if you add an index on a large table… Worse, this time can be indefinite if a migration fails or if your deployment script crashes…
In reality, you have no guarantee to deliver in a few seconds and this risk alone is enough to make your migrations “ZDD compliant”.