Olá pessoal!
Com o alto nível de abstração que o Java Server Faces nos proporciona, ganhamos um alto índice de produtividade na fase de desenvolvimento, porém, o tempo de execução das aplicações, por uma razão óbvia (alto nível de abstração), aumenta consideravelmente.
E quando o assunto é escalabilidade? Existem vários tutoriais e documentações oficiais que recomendam colocar vários atributos na sessão e alguns deles contendo listas inteiras resultantes de queries no banco de dados (Vejam a documentação do VWP http://www.netbeans.org/kb/55/vwp-index.html). Alguns componentes simplesmente não funcionam se vc não colocar o escopo dos “managed-beans” como session, devido ao ciclo de vida das aplicações Java Server Faces.
O JSF nos dá duas opções para salvarmos o estado dos componentes: no servidor ou no cliente. Caso optemos pela primeira opção, perdemos em escalabilidade, pois o consumo de memória “server-side” aumentará consideravelmente com o crescimento do número de usuários acessando simultaneamente (lembrem-se das queries guardadas como atributos de sessão). Já se optarmos por salvar o estado dos componentes no lado do cliente, ganhamos em escalabilidade mas perdemos em tempo de resposta para o usuário, pois o consumo de banda vai aumentar, tendo em vista que a cada requisição o framework tem que enviar o estado de todos os componentes na forma de longas strings em campos hidden. Algumas implementações, como ADF, adotam uma estratégia um pouco diferente, enviam um token para o cliente e utiliza este token para recuperar o estado (explicando de uma forma bastante resumida e simplista).
Enfim, desenvolver aplicações Web utilizando recursos “drag-and-drop” realmente é muito atrativo, ainda mais em Java, que sempre teve a má fama de complicar demais as coisas. Desenvolver arrastando componentes, configurando propriedades, dando duplo-clique em um botão e adicionando a codificação (lembrei do Delphi) é realmente fascinante. E quanto o tema desse tópico? Vale a pena pagar este preço?
Lendo a documentação do visual web pack (http://wiki.netbeans.org/wiki/view/VwpFaqPerformanceTweak) sobre performance verifiquei que eles consideram aplicações de grande porte, sistemas com mais de 25 páginas. Quem já fez algum sistema sério, não necessariamente grande, que não passe desse número de páginas?
Como vocês estão vendo este novo paradigma? Estão pensando em performance e escalabilidade ou estão deixando para pensar quando realmente precisarem? E quando precisarem, como vai ser?
Mais um tópico para meditação 
Abraços!
