I am interested to know how people make their Lisp deployments and Webapp updates (especially updates) in production.
In Ruby, many, including me, use Capistrano for deployment. It provides good indirectness and the ability to execute commands remotely and, most importantly, (in my opinion) the ability to roll back to a working code base.
I know that the idea of a long-running Lisp process associated with Swank via an SSH tunnel and modified in place is a popular idea that got off my feet, but I did not drink this Koolaid, mainly because of the issue of updating the process with state (which seems to require trouble if something goes wrong - like unforeseen impedance mismatches between the current state in memory and new definitions of objects that will soon be in memory).
Given that you can create almost idle (or completely) webapps using hunchentoot (or embed your favorite Lisp application server here), it seems that using something like Capistrano can be used to irreversibly update Lisp code too if the Lisp process is hiding behind nginx in its upstream channel, and if you can correctly choreograph by removing the hunchentoot processes and spinning them back after updating the code, for example, returning them back, leaving at least one hunchentoot process running in the cluster at any moment ent (CGI or mod_lisp can be used, but I am not particularly interested in it, although if you really like this approach, please at least say something about it, I want to learn). For example, using Passenger (which compares oranges with apples,since it calls processes on demand), you touch tmp / restart.txt, and the application server restarts this time with updated updated code - without interruption from the point of view of users.
, , , . , .