3 Replies Latest reply on May 21, 2014 7:26 AM by livebytes

    Sistema escalável - Aprendendo...

    livebytes

      Olá 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:

       

      1. Não precisam compartilhar a mesma base de dados. A idéia são módulos diferentes completamente.
      2. Cada um poderia escalar independentemente. Cluster, balanceamento de carga.
      3. Existe um quarto (04) sistema  que terei acesso,com certeza, via REST. Ele detém muitas informações que os meus usarão.
      4. Eles conversam entre si. Em especial o sistema (01) com o sistema (04) Pode ser muito intensa essa comunicação.
      5. O sistema (01) poderei usar JBPM. Muito pouca regra (hoje). No futuro ? Pode ter bastante regra e até virar uma "central de inteligência".
      6. 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.
      7. O sistema (03) é um chat-server. Como dito ele lê/escreve(possivelmente) info no sistema (04).
      8. Camada de segurança forte para o mundo exterior. Todos os sistemas estão sob o mesmo telhado.
      9. 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.
      10. 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:

       

      1. 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.
      2. OpenShift para testes e desenvolvimento mas não descarto um OpenStack.
      3. 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.
      4. Já dito, SwitchYard.
      5. 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á.
      6. Vide 8.
      7. 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.
      8. PiketLink? Confesso que não li a respeito. Vou me informar mais aqui. Sugestões diferentes dele ?
      9. JMX. Alguma outra dica aqui ?
      10. Auto descritivo.

       

      Senhores(as), reintero que não procuro a bala de prata. Gostaria de idéias e opiniões.

       

      Desde já obrigado,

      Alberto

        • 1. Re: Sistema escalável - Aprendendo...
          rimolive

          Olá Alberto,

           

          Desculpe a demora em responder. Segue minhas sugestões:

           

          1. Se teu objetivo é integração, SwitchYard com certeza é o mais adequado.
          2. Nesse ponto, tenha em mente o esforço que você quer ter sobre o ambiente em si. Afinal, OpenShift e Openstack são produtos de Cloud Computing mas um é PaaS e outro é IaaS. O que você prefere? Gerenciar você mesmo os servidores ou apenas provisionar as aplicações? Isso é que o que irá decidir se deve usar OpenShift ou Openstack.
          3. Mantenha o foco no SwitchYard se teu objetivo é integração.
          4. Concordo plenamente... =D
          5. Não sei se te compreendi quando você menciona "regra", mas jBPM é aconselhável para criação de fluxos de negócios. Drools é mais recomendado para Regras de Negócios.
          6. Pode me descrever o objetivo de export publicamente um serviço REST aqui?
          7. Considere a utilização de Websockets para isso.
          8. PicketLink extende as funcionalidade do JAAS. 100% recomendado.
          9. Pode-se também utilizar o RHQ, que é um projeto da JBoss para monitoramento.
          10. 100% de acordo também. =D
          • 2. Re: Sistema escalável - Aprendendo...
            rimolive

            Olá Alberto,

             

            Tem mais alguma dúvida a respeito?

            • 3. Re: Sistema escalável - Aprendendo...
              livebytes

              Olá Martinelli,

               

              Obrigado pelas respostas !

               

              Quanto a sua pergunta ao item 6... eram empresas distintas que iriam trocar algumas informações. Daí o REST. No caso não iria usar o SwitchYard mesmo por questões contratuais. Resumo: política. :-/

               

              Novamente, muito obrigado pelas respostas.

               

               

              Att,

              Alberto