I am researching how we can build a rolling deploy architecture for Drupal. Here is the high level goal:
1) I begin a software deploy, users are not affected by this
2) Software deploy is complete, users are not affected by this
3) I switch my load balancer such that only certain networks are directed at the new code, my internal testers test. External normal users are not affected by this.
4) After verification, I open the site wider, allowing a small % of normal users into the site. Most normal external users are not affected by this.
5) Over the next few hours, I keep opening the site while constantly monitoring. Should a problem arise, I switch users back to the old code while we triage.
6) Deploy complete, most users did not even notice a change.
Has anyone seen or done anything like this with Drupal? This is a fairly common strategy for websites, but given the data driven nature of Drupal, I can see several problems:
1) Users posting comments or other content should not lose that content and should not be interrupted by a "read only" mode.
2) Changes should be allowed to overlap such that I can change a view, remove a module, or introduce a new default theme in my new code deploy that is not present in the old code deploy.