Currently I am working on the physical view of our Sitecore architecture, part of this view is how we do deployments which cause no downtime for endusers and preferably our content editors. So far, we have automated all of our deployments, because we have 20 different sitecore instances (all existing of 4x CD and multiple CM's) and we have tons of deployments a day.
From the CI and automated deployments, our next step is to be able to deliver zero downtime deployments. Multiple strategies have come into my mind and most strategies fit a specific situation, which will work or won't work for different situations, so I am not looking for the one-size-fits-all solution, but for the challenges that we will face.
From what I've come up with, I can think of the following:
- User Sessions. Graceful remove CD's from a load balancer or don't use sticky sessions
- databases. what data is stored in web/core when someone visits a CD server. Is there any data that is stored? (I know that, for example, userprofiles, passwords, groupmemberships et cetera) are stored in the core database. Are there any queues that I have to take care of?
- WFFM/other modules -> where do they store data? I believe they use some queues as well?
- Itemdata: develop defensively, make sure that renderings (and other logic) don't freak out when a field is removed/renamed.