We're allowing customers to create websites on our SaaS app. We currently use Jetty as the app server, but we could use anything J2EE.
I'd like to be able to scale customer webapps across our cluster. The idea is that if a particular customer had a webapp which was getting hit hard, the .war file would get replicated across the cluster so that other machines could handle the load. It would have to be done on a webapp-by-webapp basis, though, because if we have 1,000 customers we sure don't want to replicate all of their webapps onto every node.
It's a little akin to what Heroku and Google app engine do. If your app needs to scale, they copy it onto other boxes automatically.
Are there any app servers that are smart enough to do this? If not, what technologies would we use to build it ourselves?