8

I'm curious to know how other developers deal with versioning of web-apps and deploying different versions. The fundamental problem is that someone might be using your web-app when you deploy a new version, at which point the Javascript etc they have not he client-side is out of date.

Versioning the media on the client-side is easy enough, but if you version that you also need to version your business logic and the database, which is where things could get messy...

So I see a couple of ways of dealing with this:

  1. Display a "Upgrading" notice on the site when deploying a new version.

  2. Version tag client-side and reject any submissions to the new version from old client-side sources. Fair enough, but it doesn't really go hand in hand with continuous deployment.

  3. Continuous DB migration - running multiple version of the app at the same time (migrating users to the new version when possible). This would need any updates on the old DB schema to be "forward ported" to the new schema. Seems the most attractive for deployment, but also could be horribly complex.

  4. Somewhere in the middle of all three.

I should note that I know worrying about this kind of thing is beyond the needs of most apps, but I was thinking about it and I'm curious to know how others deal with it.

Allan Jardine
  • 5,303
  • 5
  • 30
  • 34
  • Complex issue. Checkout the following answer: http://stackoverflow.com/questions/389169/best-practices-for-api-versioning – Mark O'Connor Feb 08 '12 at 22:32

2 Answers2

-1

This is really an amazing question. Most important and effective tool is Git that is currently used for versioning tool though there are many tools but I found git the most efficient as it tracks the working of every employee.We can also took suggestions from public contributors for testing purpose. We can make different branches from main that help us to keep our code present in all versions with or without new features. And auto deployment is not a positive step you should test that several times and use different test cases for that.

Nimra Tahir
  • 391
  • 1
  • 6
-2

There are plenty of tools available for your exact requirements. Like Phing, and Phingistrano. Git also makes it simple but that wont display offline notice and DB deployment . I recommend dont go for auto deployment on live server, use auto deployment on staging and manual deployment on live. Also look for continuous integration on google and try teamcity

user1635914
  • 125
  • 10