Arquitetura para Alto Desempenho

Olá Pessoal,

 Estou bolando uma arquitetura para um sistema de CallCenter(Controle de Filas de Atentimento, Supervisores, Monitoramento.... cerca de 200 usuários  atualmente com projeção para 1000 no sistema) que hoje tem um sistema feito em PHP sem arquitetura e com Postgres+Sybase.... é performático, mas não gera produtividade e tem um alto grau de manutenção. A interface de operação é Web.

Estou quase 100% decidido por Pojos + Hibernate + Spring + JSF com Ajax como tecnólogias de apoio para nova arquitetura do Modelo de Domínio que estou criando. Porém os dois principais fatores deste sistema é desempenho e produtividade para interface Web. Como vocês avaliam isso?

Outra coisa é que quero injetar as Tecnologias acima mencionadas para equipe que não conhece java mas são ótimos programadores(tem bons conceitos de OOP) e muito espertos, vou contratar treinamento para os mesmos(3 pessoas) e contratar mais 1 com domínio para apoio juntamente comigo.

Aguardo opniões, obrigado.

[quote]Estou quase 100% decidido por Pojos + Hibernate + Spring + JSF com Ajax como tecnólogias de apoio para nova arquitetura do Modelo de Domínio que estou criando. Porém os dois principais fatores deste sistema é desempenho e produtividade para interface Web. Como vocês avaliam isso? [/quote]Já criei tempos atrás um projeto com a seguinte estrutura para um Call-Center = = (JSF 1.1 + iBATIS + Tomcat 5.5 + PostgreSQL) , p/ 180 posições e a intranet que montamos era um avião.Hj. usaria (JSF 1.2 (RI)/RichFaces + iBATIS ou JPA + DB2-Express C 9.2 + Tomcat 6.0.14 ) ou saindo do modismo (Struts 2.0.9 + iBATIS + Guice + DB2-Express C 9.2 + Tomcat 6.0.14 ).

[quote]Outra coisa é que quero injetar as Tecnologias acima mencionadas para equipe que não conhece java mas são ótimos programadores(tem bons conceitos de OOP) e muito espertos, vou contratar treinamento para os mesmos(3 pessoas) e contratar mais 1 com domínio para apoio juntamente comigo. [/quote]Beleza mais manda eles treinarem fora da empresa e com curso em uma boa empresa, atente que seu retorno para produção não será antes de 6 meses e que por mais que eles sejem os seus bambas ninguèm será mágico de “desenhar” telas de atendimento e chamados só pq. vc. quer “injetar” isso ou aquilo, não esqueça que Java é uma plataforma e que serve para várias coisas.
Ps. dê uma olhada em MDA.
sds.

Para a parte server, Pojo+Hibernate+Spring são uma boa. Lembre-se de utilizar corretamente cache e vc. terá um sistema bem robusto. Como se trata de um callcenter, disponibilidade é um fator importante e vc. já deve se preparar para operação em cluster. O ponto aí nem é tanto a questão de pifar a máquina, mas ter flexibilidade em termos de operação, principalmente no caso de viradas de versão.

Já que sua equipe é formada por PHPzeiros, que tal dar uma olhada no Quercus (http://quercus.caucho.com/) ?
Pode ser uma boa para aproveitar eventuais componentes de interface que vc. já tenha implementado.

Como vc. falou de AJAX, sugiro tb dar uma olhada no pouco conhecido mas excelente TIBCO-GI (http://gi.tibco.com/), que tem em sua IDE um grande diferencial em relação a outras soluções de “cliente rico”.

Philippe

Grato do conselho, mas será que esse curva de aprendizado não pode menor não, estou cotanto um treinamento com a seguinte ementa:

80 Horas, além do mais será conduzido um projeto piloto durante todo curso, para ser praticado durantes o horário de trabalho para prática dos envolvidos.

Módulo 1
Java Básico (Nivelamento)
Carga Horária: 12 horas

Programação Java
Funcionamento
Preparação do ambiente Java
Aplicação de modificadores
Operadores
Modificadores
Estruturas de Dados,Condicionais e de Loop
Programando Orientado a Objetos
Encapsulamento
Herança e Polimorfismo
Exceções

Módulo 2
Java para Internet (Nivelamento)
Carga Horária: 12 horas

Servidor Web
Servlets
Formulários
Gerenciamento de seção
JSP
Expressões e Declarações
Scriptlets
Variáveis pré-definidas JSP ? utilização de Java BEANS
Acesso a propriedades

Módulo 3
Padrões de Projeto de Software
Carga Horária: 12 horas

Padrões
O que são padrões
Utilização de Padrões
Padrão MVC2
Codificação de camadas MVC2
Padrões e responsabilidade de classes em desenvolvimento (Design Paterns)
Adapter e DAO
Command
Facade
Iterator
Singleton
Factory

Módulo 4
Hibernate
Carga Horária: 16 horas

Configuração de SessionFactory
Classes Persistentes
Mapeamento Objeto/Relacional
Collections
Componentes
Manipulando dados persistentes
Seleção de dados múltiplos
Seleção de dados únicos
Inserção
Alteração
Exclusão
Relacionamento Parent/Child
Cláusula From
Cláusula Where
Comandos SQL
Transações e concorrência

Módulo 5
SPRING
Carga Horária: 12 horas
Inversão de Controle e Injeção de Dependências
Configuração via XML Schema
Recursos para facilitar o acesso a dados
Suporte a Programação Orientada a Aspectos (AOP)
Recursos do Spring MVC
Configuração via Annotations/Spring-Annotation

Módulo 6
JSF
Carga Horária: 16 horas
O que é JSF
Projetos Web com JSF
Componentes básicos
Cadastros no JSF
Caixas de Seleção
Tabelas no JSF
Validação e mensagens de erros
Beans Gerenciados
Eventos ? Captura e manipulação
Tag Library
JavaScript no JSF
Internacionalização
Trabalhando com JSF e CSS
Ajax4jsf - componentes ricos Configuração via Annotations / Spring-Annotation

sagui1101,

Já que você sabe as tecnologias e arquitetura (se não sabe, está quase lá) que vai utilizar não acha que é melhor montar um treinamento personalizado, focado nas tecnologias e arquitetura que você escolher? Existem bons centros de treinamentos que montam um curso com as suas necessidades.
Ah… e se eu fosse você pensaria em ter umas 3 pessoas experientes (e muito boas) na tecnologia. A sua equipe vai passar por problemas de ambiente, relacionar o que foi aprendido no treinamento com as necessidades do projeto, manter o código OO, etc…

Em 80 horas sua equipe poderá até ter uma base de desenvolvimento Web com Java, mas acho que será improvável que consigam colocar tudo em prática no primeiro projeto real.

Minha sugestão é contratar algum consultor experiente para servir como “coach” da equipe e evitar que incorram em erros de principiante que poderiam ser perfeitamente evitáveis.

Note que não estou falando de colocar alguem full-time. IMO umas 4hs presenciais por semana e um SLA para responder dúvidas por e-mail ou telefone (4hs, pex), devem ser suficientes.

Vixe to ficando preocupado… é tão complicado assim… a curva é tão grande mesmo…

Se eles forem, como vc diz, bons de OO, nao vai haver problema. A maioria das duvidas relacionadas a Java geralmente esta ligada à Orientação à Objetos, nada de Java em si.

[quote] Vixe to ficando preocupado… é tão complicado assim… a curva é tão grande mesmo.[/quote]Não é complicado não é só usar o que o Psevestre indicou .:

[quote]Minha sugestão é contratar algum consultor experiente para servir como “coach” da equipe e evitar que incorram em erros de principiante que poderiam ser perfeitamente evitáveis. [/quote]Ele mesmo pode indicar um bom curso e a estrutura a ser montada.
Ps. O lance do cache é importante…

Obrigado, galera,

Por favor passem a ementa de um curso bom para caso então por favor e materiais de estudo livros, quero deixar disponíveis para eles também.

Já Estou com

Hibernate em Acão

Pojos do iniciante ao profissional

Pro JSF com Ajax

Java Guia do Programador
PETER JANDL JR.

JSF Core

voce cogitou o uso de um servidor de aplicação?

Não pois acho a curva de aprendizado maior com um servidor de aplicação porque neste caso nem eu tenho experiência.

IMHO quando voce faz um sistema que tem uma projeção de 200 para 1000 (apesa de não mencionar em quanto tempo, mas a acredito que seja um sistema que irá crescer bastante em pouco tempo) e se preocupa em performance(estou imaginando um sistema mais crítico), como voce escalaria um sistema desse com spring?
Com o JEE 5, acho mais fácil (e interessante no meu ponto de vista) voce aprender e usar o EJB3, do que o Spring(imagino que usará o Spring para a parte transacional), se fosse para utilizar o EJB 2.1, concordaria com voce, mas o 3.0 está mais simples e produtivo. Acho o que vai dar mais trabalho mesmo é o JSF.