4

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.

CharlesB
  • 86,532
  • 28
  • 194
  • 218
meecect
  • 549
  • 1
  • 6
  • 16

1 Answers1

0

That gets complex very quickly, especially with collaborating in Google Docs for example, you want different versions of a document to be compatible with eachother. So you can either decide to not change your database until every major version, and then move everybody over to the new version of your app, or make "converters" that can convert your data from one version to the other (and backwards) and keep different databases in sync while accepting data from different "app" versions.

The "easiest" way to manage this is by using an eventlog or even go into something like CQRS, those are patterns that make thinking about your data in this way a lot more manageable.

But I would think twice before implementing something like this. Do you REALLY need it? Do the (huge?) costs outfit the (tiny?) benefits? Do you need it AT THIS STAGE?

Vespakoen
  • 161
  • 5