OK, a small company can just notify their users, then 404 their website while they upgrade their database / code. But this is kind of ugly, and discourages regular iterations.
How do really big companies (like Facebook) do migrations, without having downtime?
Leveraging the layered architecture and the end-to-end control, the Zero Downtime Release framework introduces novel signalling and connection hand-off mechanisms through which a restarting component can shield the users from disruptions while maximizing their ability to keep serving traffic to ensure zero downtime.
The key component is the database. A method that I've seen involves using replication to mirror data across two servers. Once this is setup, the primary database server can be upgraded while the application servers are pointed at the secondary (replicated) server. Once the primary DB upgrade is complete, application servers can be lazily upgraded and pointed at the upgraded DB. The trick is ensuring that the app servers can deal with multiple DB schemas. To do this, you're looking at having several clusters of servers behind some sort of load balancing appliance. It's not cheap :).
They use clustered solutions with massve parallelism, so they can take one server out of the cluster without impacting service, upgrade it, then put it back in the cluster. This typically requires releases to be backwardly compatible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With