Arquitetura em sistema com vários módulos

Gostaria de uma opinião de vocês.
Estou modelando um sistema que terá vários módulos (cada módulo uma app), um módulo principal terá as informações do meu cliente, usuário, permissões de acesso, etc.

Terá outro módulo A que usará as infomações do módulo principal, como dados de cliente, usuário e etc. O módulo B a mesma coisa.

Como faria pra persistir e manter esses dados atualizados?
Por exemplo, a tabela ‘venda’ do módulo A vai precisar do id do meu cliente, para poder fazer o multi tenancy, e quando alterado o usuário no módulo principal, essas informações precisarão ser atualizadas em todos os módulos.

Qual a melhor abordagem para isso?

[quote=j0nny]Gostaria de uma opinião de vocês.
Estou modelando um sistema que terá vários módulos (cada módulo uma app), um módulo principal terá as informações do meu cliente, usuário, permissões de acesso, etc.

Terá outro módulo A que usará as infomações do módulo principal, como dados de cliente, usuário e etc. O módulo B a mesma coisa.

Como faria pra persistir e manter esses dados atualizados?
Por exemplo, a tabela ‘venda’ do módulo A vai precisar do id do meu cliente, para poder fazer o multi tenancy, e quando alterado o usuário no módulo principal, essas informações precisarão ser atualizadas em todos os módulos.

Qual a melhor abordagem para isso?[/quote]

Você diz, 3 apps, 3 threads executando? 3 App distintas ou um app modularizada com uma thread inicial?

[]'s

[quote=leonhard32][quote=j0nny]Gostaria de uma opinião de vocês.
Estou modelando um sistema que terá vários módulos (cada módulo uma app), um módulo principal terá as informações do meu cliente, usuário, permissões de acesso, etc.

Terá outro módulo A que usará as infomações do módulo principal, como dados de cliente, usuário e etc. O módulo B a mesma coisa.

Como faria pra persistir e manter esses dados atualizados?
Por exemplo, a tabela ‘venda’ do módulo A vai precisar do id do meu cliente, para poder fazer o multi tenancy, e quando alterado o usuário no módulo principal, essas informações precisarão ser atualizadas em todos os módulos.

Qual a melhor abordagem para isso?[/quote]

Você diz, 3 apps, 3 threads executando? 3 App distintas ou um app modularizada com uma thread inicial?

[]'s[/quote]

3 apps distintas.

[quote=j0nny][quote=leonhard32][quote=j0nny]Gostaria de uma opinião de vocês.
Estou modelando um sistema que terá vários módulos (cada módulo uma app), um módulo principal terá as informações do meu cliente, usuário, permissões de acesso, etc.

Terá outro módulo A que usará as infomações do módulo principal, como dados de cliente, usuário e etc. O módulo B a mesma coisa.

Como faria pra persistir e manter esses dados atualizados?
Por exemplo, a tabela ‘venda’ do módulo A vai precisar do id do meu cliente, para poder fazer o multi tenancy, e quando alterado o usuário no módulo principal, essas informações precisarão ser atualizadas em todos os módulos.

Qual a melhor abordagem para isso?[/quote]

Você diz, 3 apps, 3 threads executando? 3 App distintas ou um app modularizada com uma thread inicial?

[]'s[/quote]

3 apps distintas.[/quote]

Então, acho que o esquema seria implementar as regras de forma distribuida, através de EJB ou Webservice mesmo.
Caso ja tenha visto algo sobre EJB e JMS, vale dar uma procurada sobre MOM.

[]'s

[quote=leonhard32][quote=j0nny][quote=leonhard32][quote=j0nny]Gostaria de uma opinião de vocês.
Estou modelando um sistema que terá vários módulos (cada módulo uma app), um módulo principal terá as informações do meu cliente, usuário, permissões de acesso, etc.

Terá outro módulo A que usará as infomações do módulo principal, como dados de cliente, usuário e etc. O módulo B a mesma coisa.

Como faria pra persistir e manter esses dados atualizados?
Por exemplo, a tabela ‘venda’ do módulo A vai precisar do id do meu cliente, para poder fazer o multi tenancy, e quando alterado o usuário no módulo principal, essas informações precisarão ser atualizadas em todos os módulos.

Qual a melhor abordagem para isso?[/quote]

Você diz, 3 apps, 3 threads executando? 3 App distintas ou um app modularizada com uma thread inicial?

[]'s[/quote]

3 apps distintas.[/quote]

Então, acho que o esquema seria implementar as regras de forma distribuida, através de EJB ou Webservice mesmo.
Caso ja tenha visto algo sobre EJB e JMS, vale dar uma procurada sobre MOM.

[]'s[/quote]

Não usarei nada de EJB e afins, a princípio nem usarei Java.
Queria mais a abordagem, arquitetura, e não tecnologia.

[quote=j0nny][quote=leonhard32][quote=j0nny][quote=leonhard32][quote=j0nny]Gostaria de uma opinião de vocês.
Estou modelando um sistema que terá vários módulos (cada módulo uma app), um módulo principal terá as informações do meu cliente, usuário, permissões de acesso, etc.

Terá outro módulo A que usará as infomações do módulo principal, como dados de cliente, usuário e etc. O módulo B a mesma coisa.

Como faria pra persistir e manter esses dados atualizados?
Por exemplo, a tabela ‘venda’ do módulo A vai precisar do id do meu cliente, para poder fazer o multi tenancy, e quando alterado o usuário no módulo principal, essas informações precisarão ser atualizadas em todos os módulos.

Qual a melhor abordagem para isso?[/quote]

Você diz, 3 apps, 3 threads executando? 3 App distintas ou um app modularizada com uma thread inicial?

[]'s[/quote]

3 apps distintas.[/quote]

Então, acho que o esquema seria implementar as regras de forma distribuida, através de EJB ou Webservice mesmo.
Caso ja tenha visto algo sobre EJB e JMS, vale dar uma procurada sobre MOM.

[]'s[/quote]

Não usarei nada de EJB e afins, a princípio nem usarei Java.
Queria mais a abordagem, arquitetura, e não tecnologia.[/quote]

Certo, então, abordagens eu vejo duas:

  • SOA
  • MOM

[]'s

Você vai duplicar os dados em todos os módulos?

Alguns dados, como usuário, empresa, etc, estarão em todos os módulos.

Esses módulos vão ficar em servidores separados? Seria estranho um pouco ficar duplicando dados, no geral eu utilizaria REST para comunicação entre os módulos. Para autenticação utilizaria um SSO.

Não é uma regra estarem em servidores separados, mas pode ocorrer.
Sobre REST, a cada item que, por exemplo, eu precisar verificar se aquele usuário tem permissão para X ação, ter que fazer uma conexão a outro servidor, ficaria inviável, na minha opinião.

Autenticação SSO é uma boa alternativa, apesar da autenticação não ser o maior dos problemas nesse caso.

Você irá fazer o usuário se logar em cada módulo?

Para ter acesso a qualquer módulo, vai ser necessário estar logado, mas uma vez logado em qualquer módulo, estará logado nos outros, como o Google faz. Pra isso o SSO.

Então jovem, SSO pode trazer todas as informações de autorização … são muitas possibilidades, problema é que eu não sei como será o seu sistema realmente, não sei se vai colocar no mesmo servidor ou não vai, o porque de querer separar em módulos, que pode ser usado outras abordagens, mas isso depende do seu problema especifico.

[quote=clunsde]… são muitas possibilidades, problema é que eu não sei como será o seu sistema realmente, não sei se vai colocar no mesmo servidor ou não vai, o porque de querer separar em módulos, que pode ser usado outras abordagens, mas isso depende do seu problema especifico.

[/quote]
Exatamente. Fica complicado mesmo sem um cenário real. Se “pode ocorrer de estar em servidores separados ou não” isso realmente é uma necessidade real j0nny? Qual seria o problema para não centralizar o banco de dados? Isso não ficou claro na prática. Senão no final pode acabar matando formiga com canhão. O bom é parar e procurar saber o que os clientes envolvidos querem para atender o problema real e ver se realmente é necessário ir além de uma solução mais comum.