Hey everyone! I'm really interested in learning about zero downtime deployments outside of Kubernetes. I've found that one of Kubernetes' best features is its ability to handle zero downtime during deployments. However, for web-based applications, I know that having a proxy in front of it is vital. When deploying a new version, the previous version must remain active until the new one is fully operational. What techniques or tools do you all use to ensure zero downtime deployments without utilizing Kubernetes?
2 Answers
One approach we've relied on for over 30 years is simply running two web servers behind a load balancer. When it’s time to deploy a new version, we swap the load balancer to point to the new server. It's a classic method that has stood the test of time!
Exactly this! It’s straightforward and effective.
Before we transitioned to Kubernetes, we used systemd with a load balancer for zero downtime. The trick was to drop a marker file on the server, which made it respond as unhealthy. We let it be removed from the load balancer, then deployed the new version, confirmed it worked, and brought the server back online. This was fully automated using Azure DevOps releases and worked smoothly for us!
That's a clever approach! What if you need to revert back?

This method is like the ancient ways of deployment—it really works!