I'm writing a web app and am wondering about future upgrades and how upgrading the webapp will affect the user experience.
In particular, I was wondering how a company like Google approaches this problem. For example, I have seen several examples where a particular google app will ask the user if they want to upgrade to 'the new google docs', or similar. This is the experience I would like to provide, but I'm not sure how to go about it. If it matter, I'm writing an app that uses backbone.js and has a heavy JS client side component. I have seen several discussions talking about versioning the REST component or the WebServices component, but none that discuss the actual client-side code or backend components (of course, the backend may not matter much if it is all behind a versioned webservice)
I'm interested in how they achieve this, from an application standpoint and from a (presumably) backend DB standpoint.
So it seems like there are several issues.
Where in the web root do the versioned applications live?
How do you serve multiple versions to different users?
How do you version the backend datastore?
Since I'm using backbone, I am particularly interested in to design the router for this type of app. If the various versions live in a subdir, how do I create a proper router?
There are probably some other considerations as well. Any advice would be welcome.