One of the simplest ways to handle this is to put a load balancer or proxy server in front of the application server. Then set up another application server with the new code. Once it is ready, you can change the proxy server to point to the new application server with the new code. Once you are sure nobody is using the old application server, you can shut it down. This, of course, relies on your ability to get that setup in place. If you are on a budget, you might be able to do it all on a single box. For instance, you could use nginx as a reverse proxy to your application on the same box. Getting that in place could potentially cause a tiny window of downtime - not sure if that's acceptable. Then you might be able to set up the new application on the same box with a different port - again, I'm not sure if that would work for your setup. Anyway, the reverse proxy approach is a pretty common one, and one of the great reasons for deploying to the cloud. You only pay for the short period of time when you need both boxes.