Online update functionality

Hi all,
I was thinking about extending the functionality of my app with a online
update functionality. Maybe it is a bad idea, I like to hear your
opinion.

I have in mind something like the following:

  • upload zip to server with new app version;
  • unzip file to server problably save it to some releases folder
  • overwrite my app sources in production
  • migrate database
  • restart my SCGI process to activate the changes

I am aware of the existence of Capistrano, but I prefer this approach
where it is integrated with the application, part of the application. I
am also only allowed http-connections, so now I have to update the
application by transferring sources directly from an USB key to the
server.

Is this is a good idea? Would you recommend against it? Has this been
done before?

By saving all uploads to a releases folder I could also easily provide
some rollback functionality.

Thanks in advance,
Onno

This e-mail and any attachment is for authorised use by the intended
recipient(s) only. It may contain proprietary material, confidential
information and/or be subject to legal privilege. It should not be
copied, disclosed to, retained or used by, any other party. If you are
not an intended recipient then please promptly delete this e-mail and
any attachment and all copies and inform the sender. Thank you.