design patterns – Highly Available System | Transfer State Between Two Instances

If we had a highly available service running and that service required an update, I typically see that the service goes down for sometime, and then the new service comes up.

For discussion’s sake, let’s say this service tracks Virtual Machines on a host and takes actions with the virtualization layer (KVM/Hyper-V) based on some work queue, and also responds to user requests based on the work needed to be done.

I’m wondering if you could design some sort umbrella service that can act as a temporary interface to your service as the old version begins shutting down, and the new service begins to come up, so from the your service’s user’s perspective, an update is nearly seamless. What are some ideas on how to transfer state from Old Version -> Interface -> New Version?