Eu tive uma ideia para um projeto que será um site de rede social com um objetivo de unir e conectar pessoas com determinado interesse.
Seria um site com caracteristicas parecidas com facebook/orkut/Twitter etc. Ou seja, o site terá milhões de acessos simultaneos e basicamente terá q responder o mais rapido possivel para cada request.
Tenho algumas duvidas qto a infra estrutura e escolha dos frameworks:
Devo utilizar hibernate ou jdbc puro?!
Qual banco de dados utilizar? Vcs acham q mysql ou postgree dão conta do recado ou precisa ser um pago como Oracle/DB2 etc?
Falando em banco vcs acham q é conveniente usar store procedures para agilizar algum processo?
A principio vcs veem a necessidade de utilizar EJB´s para separar a view do modelo ou isso seria apenas uma camada a mais q serviria apenas para deixar mais lento? Ou entao deixaria tanto o codigo da View qto do Model juntos rodando no servidor web.
Qual servidor web?
A clusterização:
seria feita por exemplo com o Apache que iria redirecionar cada sessão para uma maquina especifica e a partir desse momento determinada maquina ficaria com essa sessão até o fim. Ou vcs veem algum sistema de cluster mais efetivo?
Cara acho que seria interessante você dar uma olhada no Google App Engine sendo uma otima alternativa para não ter problemas referentes a escalabilidade, alem de ter planos de hospedagem gratis(com algumas limitações) e dependendo do sucesso e do numero de acessos da sua aplicação posteriormente partir para um plano pago.Alem disso possui um ambiente de desenvolvimento bem bacana totalmente integrado com o Eclipse … o unico pesar é que existem algumas limitações mas creio que não sejam um empecilho para uma aplicação com essas caracteristicas…enfim vale a pena dar uma conferida.
Sobre banco eu escutei falar muito sobre NoSql para esse tipo de situação, porem nunca utilizei,
mas não sei se é possivel utilizar junto com o google app engigne…
Nem um, nem outro. Banco de dados relacional, nesse contexto de redes sociais, não é a melhor opção. Para provar isso, só ver que Twitter e Facebook usam BD para coisas muitas específicas, usando para todas as outras soluções NoSQL como o Cassandra.
E o pq disso? Pq BDs relacionais trabalham com o conceito de ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Bancos NoSQL sacrificam alguns desses pontos ao custo de velocidade, escalabilidade, etc.
Portanto, recomendo a vc estudar uma solução NoSQL (Cassandra, MongoDB, CouchDB, etc).
Não pelos mesmos motivos acima.
IMHO, não há a necessidade de querer enfiar tecnologia só pra falar que usa. Pra vc ver, o facebook usa PHP, que eu achava uma linguagem bem simplória, mas que vi que poderia ser muito poderosa, se bem usada.
Acho bom você consultar o catálogo de soluções da Apache. Muitas das coisas que vc procura para a sua solução podem estar lá.