Sistema escalável - Aprendendo...
livebytes Mar 21, 2014 6:50 PMOlá Grupo!
Antes de mais nada, venho aqui buscar opiniões e sabedoria. Dicas de livros, sites e documentos são bem vindos. Eu não busco aqui a solução "bala de prata" pois sei que não existe.
Quero aproveitar essa oportunidade para aprender, usando novos frameworks. Passei um dia pesquisando mas algumas dúvidas não foram respondidas, quem sabe vocês
podem me ajudar em alguns pontos. Caso eu não seja claro em algum ponto, por favor avisem!
Tendo dito isso, vamos lá!
Definindo o problema
Preciso criar 03 sistemas distintos. Todos Java WEB
Os sistemas:
- Não precisam compartilhar a mesma base de dados. A idéia são módulos diferentes completamente.
- Cada um poderia escalar independentemente. Cluster, balanceamento de carga.
- Existe um quarto (04) sistema que terei acesso,com certeza, via REST. Ele detém muitas informações que os meus usarão.
- Eles conversam entre si. Em especial o sistema (01) com o sistema (04) Pode ser muito intensa essa comunicação.
- O sistema (01) poderei usar JBPM. Muito pouca regra (hoje). No futuro ? Pode ter bastante regra e até virar uma "central de inteligência".
- O sistema (02) poderá ter seu REST exposto para o exterior para alguns que tenham acesso (não público). Único que não precisa escalar.
- O sistema (03) é um chat-server. Como dito ele lê/escreve(possivelmente) info no sistema (04).
- Camada de segurança forte para o mundo exterior. Todos os sistemas estão sob o mesmo telhado.
- Monitoramento. Existirá uma "central" para monitoramento online, logs e tudo que já estamos acostumados a usar. É uma tela unificada, portanto de 1 a 3 vão estar lá e seus possíveis clusters.
- No momento, 100% opensource e sem licenças pagas. Pode vir a ter suporte da Red Hat no futuro. Daí todas as frameworks vindo da JBoss.
O que pesquisei como possíveis soluções
Vamos à minha proposta por item:
- Aqui inicialmente pensei em usar um HornetQ, mas vi que o SwitchYard deve ser a melhor opção devido à integração JBPM e orquestração. Até onde entendi o SwitchYard substitui e é muito superior ao HornetQ. Só fiquei em dúvida da velocidade, uma vez que o SwitchYard é inerentemente mais complexo.
- OpenShift para testes e desenvolvimento mas não descarto um OpenStack.
- Até posso acessar o banco do (04) mas não quero. Ficar isolado é uma boa premissa. A troca de informações não deve ser muito grande. Acredito que o SwitchWard, por ser escalável, segure a barra.
- Já dito, SwitchYard.
- Aqui o intuito é aprender uma arquitetura JBPM. Centralizar a inteligência do sistema (01) e ele se for o caso, iniciar a migração da inteligência de (04) para (01). Até 04 desaparecer. Além de todo o poder do JBPM te dá.
- Vide 8.
- Pensei aqui no jgroups por ser em cluster. Um candidato a ser pesquisado é o telegram.org devido à sua arquitetura de segurança que me interessou.
- PiketLink? Confesso que não li a respeito. Vou me informar mais aqui. Sugestões diferentes dele ?
- JMX. Alguma outra dica aqui ?
- Auto descritivo.
Senhores(as), reintero que não procuro a bala de prata. Gostaria de idéias e opiniões.
Desde já obrigado,
Alberto