Es posible modularizar una aplicación web, separando la capa de presentación de la lógica de negocios. Primeramente tienes que crear un plugin con las clases de dominio, el cual será compartido por la capa de presentación y por la lógica de negocios. La aplicación con la lógica de negocios (en donde codificarás a tus servicios) también podrías implementarla como un plugin.
Para la invocación remota puedes implementar servicios REST en el lado de los servicios, y consumirlos en la capa de presentación. También podrías emplear HttpInvoker.
Para la parte de la escalabilidad, puedes configurar dos o mas instancias de Tomcat en cluster para poder sincronizar las sesiones de los usuarios. Aquí lo que te observaría es no perder de vista el "choose the right tool for the job". Si vas a implementar algo tan grande, no será mejor hacerlo en otra tecnología mas apropiada?
A propósito, acaban de aprobar el estándar para JavaEE7, el cual ya estaría preparada para funcionar en la nube. Actualmente JavaEE funciona muy buen en grid-computing porque fue pensada para ello, pero no es muy amigable para el cómputo en la nube.
Saludos,
--
Antonio Varela
unix...@gmail.com