We currently rely on being able to execute git, svn and hg operations directly from the web. This won't work with a "web tier" model, because not every web machine will have every working copy. (We could mount the disks on every machine as readonly, but I have awful experiences with network mounts and am reasonably confident that mounting 1000 disks on 100 machines will explode in a ball of fire.)
Instead, we can bind installs to specific machines in a repository pool, and have the web tier make service calls (via Conduit) to the repository tier.
This basically means turning all the Diffusion*Query classes into Conduit methods, and making Diffusion use ConduitCall to invoke them.
Then we shove some kind of routing magic into ConduitCall so it can resolve selected calls remotely.