partitions x monolithic system  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
joellobo
Thread.start()
[Avatar]

Membro desde: 27/08/2007 14:45:01
Mensagens: 33
Localização: Fortaleza/CE
Offline

Caros, qual a alternativa para os sistemas monolíticos? O que vcs acham de partitions + restful? Seria uma boa escolha mesmo sabendo que os módulos estariam no mesmo servidor fisicamente?

This message was edited 1 time. Last update was at 17/06/2010 15:25:58


Joel Lobo
blogdojoellobo.blogspot.com
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

O topico promete hein..

mas como vc define o que seria uma boa escolha??
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

Joel, tai um bom artigo pra você escrever...

(e realmente não acho que esse assunto terá audiência aqui, se fosse repositórios com REST daria mais Ibope)

This message was edited 1 time. Last update was at 17/06/2010 00:16:26


Rodrigo Yoshima
www.ASPERCOM.com.br

Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro

Débito Técnico Blog: blog.aspercom.com.br
[WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Utilizar REST para comunicação entre os módulos de um mesmo sistema que fica no mesmo servidor físico? Não conheço o seu projeto, mas não acho uma boa idéia.

Será que não da pra criar uma subcamada em cada módulo pra isolar as dependências entre um módulo e outro pra chamar "direto"? (Se a idéia é os módulos serem independentes e cada um ter o seu ciclo de vida)

De qualquer forma, eu acredito que o ideal seja criar uma abstração para não deixar cravado do sua lógica de neǵocio uma tecnologia de comunicação específica.

(PS: @yoshima compartilho o seu sentimento...)



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

Rubem, acho que a passagem de mensagens é um aspecto a ser considerado.

Rodrigo Yoshima
www.ASPERCOM.com.br

Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro

Débito Técnico Blog: blog.aspercom.com.br
[WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Não entendi muito bem o que você quis dizer... Alguma coisa em particular eu deveria ter considerado na minha sugestão?

This message was edited 1 time. Last update was at 17/06/2010 01:04:17




Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
joellobo
Thread.start()
[Avatar]

Membro desde: 27/08/2007 14:45:01
Mensagens: 33
Localização: Fortaleza/CE
Offline

Rubem Azenha wrote:Utilizar REST para comunicação entre os módulos de um mesmo sistema que fica no mesmo servidor físico? Não conheço o seu projeto, mas não acho uma boa idéia.

Será que não da pra criar uma subcamada em cada módulo pra isolar as dependências entre um módulo e outro pra chamar "direto"? (Se a idéia é os módulos serem independentes e cada um ter o seu ciclo de vida)

De qualquer forma, eu acredito que o ideal seja criar uma abstração para não deixar cravado do sua lógica de neǵocio uma tecnologia de comunicação específica.

(PS: @yoshima compartilho o seu sentimento...)



Criar uma abstração pra isolar os módulos funciona mas com alguns problemas - é assim q trabalho hoje - por exemplo, p algumas alterações em um módulo eu preciso re-compilar e empacotar tudo.

Um EJB de um módulo acessando outro EJB de outro módulo está "cravado" uma tecnologia de comunicação. A diferença é que com REST eu não tenho dependência com tecnologia. Estou apenas utilizando um protocolo de aplicação.

Joel Lobo
blogdojoellobo.blogspot.com
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

joellobo wrote:Criar uma abstração pra isolar os módulos funciona mas com alguns problemas - é assim q trabalho hoje - por exemplo, p algumas alterações em um módulo eu preciso re-compilar e empacotar tudo.


Por isso perguntei o que seria uma boa escolha pra vc. Mas sabendo que vc usa EJB remoto para comunicacao local, porque nao REST?

joellobo wrote:
Um EJB de um módulo acessando outro EJB de outro módulo está "cravado" uma tecnologia de comunicação. A diferença é que com REST eu não tenho dependência com tecnologia. Estou apenas utilizando um protocolo de aplicação.


Ambos o torna depende de alguma tecnologia de comunicacao. A diferenca que a web é baseada em padroe abertos. Porque ser independente de tecnologia é tao importante pra vc? Me parece um caso de "otimizacao prematura".
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

joellobo wrote:
Criar uma abstração pra isolar os módulos funciona mas com alguns problemas - é assim q trabalho hoje - por exemplo, p algumas alterações em um módulo eu preciso re-compilar e empacotar tudo.

There ain't no such thing as a free lunch
Mas recompilar e empacotar tudo é um custo tão grande assim?

joellobo wrote:Um EJB de um módulo acessando outro EJB de outro módulo está "cravado" uma tecnologia de comunicação. A diferença é que com REST eu não tenho dependência com tecnologia. Estou apenas utilizando um protocolo de aplicação.


Se você usa REST, você TEM dependência com a tecnologia
Não existe milagre, você ter que colocar em algum lugar do seu código algo que chame o outro módulo. Pode ser um HTTPClient, um lookup JNDI para um EJB ou usar algum framework como Restifulie. Você pode fazer isso direto no código que fica na tua camada de negócios ou criar uma abstração para isso.

This message was edited 1 time. Last update was at 19/06/2010 23:46:29




Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

Rubem Azenha wrote:
joellobo wrote:
Criar uma abstração pra isolar os módulos funciona mas com alguns problemas - é assim q trabalho hoje - por exemplo, p algumas alterações em um módulo eu preciso re-compilar e empacotar tudo.

There ain't no such thing as a free lunch
Mas recompilar e empacotar tudo é um custo tão grande assim?


Eu tenho uma situação parecida, os gerentes tem alergia extrema a deixar qualquer sistema indisponível, o que afeta o atendimento de algumas centenas de milhares de pessoas, logística no estado inteiro, e outras empresas que se integram conosco.

Daí imagine o que é atualizar um subsistema que quase todos os sistemas dependem, que espere aquela janela semanal de deploys, ou reze.

Nesta realidade de querer indisponibilidade zero que concordo em ter sistemas integrados via rede, independente do método usado, mesmo com seus módulos estando num mesmo lugar fisicamente.

This message was edited 1 time. Last update was at 20/06/2010 16:40:22


A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Agora entendi melhor o problema. Mas se você tem que empacotar e recompilar tudo, provavelmetne você esta com um problema de dependencia circular, não?
Se não você deveria ter que empacotar e recompilar apenas os módulos alterados e os modulos afetados, caso a alteração quebre algum contrato. Mas não tem muito segredo não... você vai ter que fazer isso independente do protocolo de comunicação entre os módulos. Se o contrato for quebrado, você vai ter que corrigir o problema nos módulos que antes seguiam o contrato.

Acho que modularização é uma das coisas mais complexas que podemos enfrentas no desenvolvimento de software, mas se optarmos por não modularizarmos, o problema pode ser ainda pior. Não acho uma boa idéia lidar com um módulo gigante e complexo. Prefiro lidar com o problema de dependencias entre modulos do que lidar com as complexidades de alterar um uniico modulo gigantesco.



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
derlon
JavaTeenager

Membro desde: 12/12/2009 14:07:01
Mensagens: 150
Offline

joellobo wrote:..
Criar uma abstração pra isolar os módulos funciona mas com alguns problemas - é assim q trabalho hoje - por exemplo, p algumas alterações em um módulo eu preciso re-compilar e empacotar tudo.
...
@joellobo,
Q tal "transportar" seus Módulos para ficarem cada um deles em um Projeto Java, empacotando-os em um .JAR, importando-os em um "Projetão maior", um .WAR, p/ex.??! (separação física p/ facilitar atualizações/manutenções)
Ah, e logicamente, vc poderia definir "a comunicação" entre os Módulos através de 'Camada Anti-corrupção', como orientado p/ DDD, porem neste caso, seriam "stubs" de um Módulo para outro. O q acham??!

This message was edited 1 time. Last update was at 23/06/2010 09:23:49

 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team