The tricky part is macros and inline functions. Any time you change a macro or a function you want to inline (CL compilers can't do that automatically because of the language spec), you need to recompile all the functions that use that macro/inlined function. ASDF has some dependency-tracking functionality, but I haven't used it.
We're using SBCL on Ubuntu, and we have run into some problems with compiled fsl files. Even though we use an asdf load routine with dependencies defined, we sometimes run into certain fsl files not properly getting updated. This is either a dependency error on our part (most likely) or something else, and our work around is to simply delete all .fsl files just before running the asdf (which you can make part of the load process). So our routine is for each machine, (2 net + local instance) is to run an svn update and then run our loader file (sf-load) and thats it. It is most impressive to keep the same process running and update the code with no interruption in service.
Do you need some kind of remote procedure call to coordinate the updates from an admin instance?
I only know that there's the swank server for talking to emacs, is there something similar for talking between CL instances?
Perhaps you just issue an HTTP Post for each server in a loop?
...generally, you wouldn't do this production systems, I would hope, whatever the language.