| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 00:03:51
|
lelodois
Virtual Machine Man
![[Avatar]](/images/avatar/4bf5d7d2a1bc51d753fecf97244464a2.png)
Membro desde: 16/10/2007 07:57:45
Mensagens: 547
Localização: São Paulo
Offline
|
bosnic wrote:Prezado raf4ever,
recentemente eu terminei a tradução de um livro sobre SOA, do autor Nicolai M. Josuttis. Sem dúvida é um livro excelente e tenho certeza que fará muito sucesso no mercado brasileiro quando for lançado. Não estou fazendo aqui propaganda do livro, por isso não vou mencionar nem o título nem a editora, e mesmo que o fizesse, eu já ganhei meu dinheiro pela tradução, se o livro irá vender bem ou não, não terá efeito nenhum no meu bolso.
Pois bem. Primeira coisa que deve ser entendida sobre SOA (Arquitetura Orientada a Serviços) é que SOA não é um produto, ela é simplesmente um paradigma. Do mesmo jeito que programação orientada a objetos é um paradigma, e não um produto. Dito isso, outro ponto importante a ser levado em consideração é que SOA está na moda. Por isso você verá muitas empresas por aí (IBM, Oracle, BEA e outras) vendendo SOA, empurrando SOA para os seus clientes goela abaixo. Isso é uma enganação. SOA não é um produto e portanto não pode ser vendida. SOA é algo que você terá que implementar na prática, por si só, ou junto com a sua equipe de desenvolvimento. O que essas empresas podem lhe fornecer será no máximo algumas ferramentas, frameworks, bibliotecas para facilitar o seu trabalho.
Outro ponto importantíssimo é entender se você realmente precisa de SOA, ou seja, quando é que SOA se torna necessária de fato?
SOA é um paradigma para grandes sistemas distribuídos de proprietários e tecnologias diferentes! Se este não for o seu caso, você não precisa de SOA!
Voltando agora para a sua pergunta e levando em consideração as afirmações acima:
O que é um ESB (Enterprise Service Bus)?
Nada melhor para explicar um conceito "novo" do que através de um exemplo. Suponha a seguinte situação. Uma empresa X possui um sistema de grande porte desenvolvido em Java (JEE, EJB e outros). Essa empresa X adquire uma empresa Y que por sua vez utiliza tecnologia .NET. A empresa possui um sistema de CRM que necessita, por alguma motivo, obter informações dos dois sistemas para que possa fazer algum processo de atendimento ao cliente. Para fazer isso você teria várias opções, poderia conectar os dois sistemas diretamente, poderia desenvolver uma classe (ou todo um pacote de classes) que faça acesso aos dois sistemas.
Com tempo, à medida que surgissem outras necessidades de conectar esses dois sistemas, você acabaria por ter uma confusão geral de sistemas acessando outros sistemas. Um caos de verdade. Para evitar isso, entra o papel de ESB, que neste caso seria um "negociador", seria uma "interface" para a qual você iria solicitar a execução de alguns processos, consultas, etc. Ou seja, um elemento intermediário que seria responsável por conectar sistemas diferentes. O seu sistema Java nem tomaria conhecimento de que o outro sistema é feito em .NET ou em qualquer outra tecnologia, porque ele se comunicaria apenas com o ESB, o qual por sua vez teria o papel de se conectar a esses outros sistemas. Resumidamente, ESB seria uma abstração dessa interconexão de sistemas que usam tecnologias diferentes.
A maneira mais comum de se implementar um ESB hoje é através de Web Services, mas isso não é regra, existem outras formas de se realizar a mesma atividade. (ESB <> Web Services).
Se ainda não está claro o que é um ESB, vamos tentar entrar mais na parte prática da coisa, vamos imaginar o que poderia ser um ESB. Ele poderia muito bem ser um sistema "independente" desenvolvido em .NET que disponibiliza uma séria de Web Services e que se conecta a vários backends usados pela empresa. (Usei exemplo de .NET em um fórum Java de propósito, para destacar que SOA é independente de tecnologia usada). Como Web Sevices são um padrão (tudo bem que esse padrão ainda possui diversas coisas "não padronizadas", mas é possível seguindo boas práticas e alguns padrões já estabelecidos alcançar um resultado bom), o seu sistema Java poderia se conectar a esse "ESB.NET" atráves de Web Services e obter o resultado desejado.
Só para concluir e para ficar bem claro:
SOA é um paradigma e não um produto.
Se alguém chegar dizendo que tem uma solução SOA pronta para sua empresa, isso é mentira.
ESB é o coração de uma arquitetura SOA, é o ponto de interconexão entre sistemas que usam tecnologias diferentes.
SOA está na moda, cuidado ao adquirir "produtos prontos".
Web Services são apenas uma maneira dentre outras para implementar tal arquitetura (embora de longe a mais usada).
Espero ter esclarecido para você e para outros leitores deste fórum alguns conceitos de SOA.
Um grande abraço, Feliz Natal a todos.
Ivan Bosnic (bosnic.ivan at gmail.com)
Muito boa explicação.
" ESB é o coração de uma arquitetura SOA, é o ponto de interconexão entre sistemas que usam tecnologias diferentes. "
|
Java e Objective-C
Se depender de mim nunca ficarei plenamente maduro nem nas idéias nem no estilo, mas sempre verde, incompleto, experimental. G.F.
Os inteligentes aprendem com seus erros, os sábios aprendem com os erros dos outros.
Adorar a Deus é um privilégio.
De novo flores?
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 12:47:56
|
Tecnoage
GUJ Master
Membro desde: 13/03/2005 23:18:07
Mensagens: 1723
Localização: SP
Offline
|
Discordando de alguns pontos de vista: (Na verdade não acho que sejam pontos de vista, me parece mais informações que faltaram no resumo)
1- Nem sempre o maior benefício de SOA para as empresas é a integração. Na maioria das vezes o maior benefício é a agilidade na composição de distribuição dos serviços. Vide as ferramentas de BPMN que fazem "transformações automáticas" para fluxos BPEL, por exemplo. Tá certo que muito disso é socado goela abaixo pelos tool vendors.
2- Outra grande funcionalidade e na minha opinião uma das mais interessantes funcionalidades do ESB, é a pseudo-centralização dos serviços, que proporciona mecanismos para realização de auditorias, controle dos fluxos de mensagens, verificação mais simples e centralizada de gargalos, etc.
3- Segundo o que algém indagou sobre performance: Nao falei de performance pensando exatamente em ESBs, falei pensando emn SOA, devido ao overhead de processamento de xmls ( ou outro formato) de memória, e principalmente de I/O de arquivos texto em vez de streams. (embora para tudo isso exista algum paleativo)
4- quanto à utilização do BAM, que alguém citou, uma curiosidade: Va verificou a quantidade de memória que o BAM precisa para funcionar??? hehehe
|
Arquiteto de Software
Sysped Solutions
R3 SAP CAT-83, NF-e, ECD, EFD, CT-e, MANAD, IN86
www.sysped.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2010 15:03:09
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Tecnoage wrote:Discordando de alguns pontos de vista: (Na verdade não acho que sejam pontos de vista, me parece mais informações que faltaram no resumo)
1- Nem sempre o maior benefício de SOA para as empresas é a integração. Na maioria das vezes o maior benefício é a agilidade na composição de distribuição dos serviços. Vide as ferramentas de BPMN que fazem "transformações automáticas" para fluxos BPEL, por exemplo. Tá certo que muito disso é socado goela abaixo pelos tool vendors.
Discordo. Composição de serviços torna as coisas mais lentas (é sempre mais lento usar ferramentas externas para compor serviços do que a própria linguagem em que estes são desenvolvidos. Ou seja, só se usa, mesmo, composição, quando os serviços são desenvolvidos em linguagens diferentes. O que caracteriza integração).
Tecnoage wrote:
2- Outra grande funcionalidade e na minha opinião uma das mais interessantes funcionalidades do ESB, é a pseudo-centralização dos serviços, que proporciona mecanismos para realização de auditorias, controle dos fluxos de mensagens, verificação mais simples e centralizada de gargalos, etc.
E o controle de SLA, e a aplicação de patterns de EAI, e o baixo acoplamento entre serviços...
Tecnoage wrote:
3- Segundo o que algém indagou sobre performance: Nao falei de performance pensando exatamente em ESBs, falei pensando emn SOA, devido ao overhead de processamento de xmls ( ou outro formato) de memória, e principalmente de I/O de arquivos texto em vez de streams. (embora para tudo isso exista algum paleativo)
Depende da ferramenta utilizada e da capacidade dela. Fazendo uma alusão, JMS também tem overhead entre serialização/desserialização de mensagens. No entanto, uma solução em JMS dá mais agilidade do que se deixar o processamento ser feito de forma assíncrona. No mundo SOA, existem soluções de CEP que só fazem agilizar o processamento. Quanto a I/O de arquivos, acho que você está equivocado. Em SOA, só existe tratamento de arquivos texto como forma de compatibilidade com as antigas práticas de EAI (onde era tudo assim).
Tecnoage wrote:
4- quanto à utilização do BAM, que alguém citou, uma curiosidade: Va verificou a quantidade de memória que o BAM precisa para funcionar??? hehehe
Concordo, às vezes, é uma quantidade absurda. Mas visibilidade compensa o preço de alguns pentes de memória, não?
[]´s!
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2010 15:22:57
|
Tecnoage
GUJ Master
Membro desde: 13/03/2005 23:18:07
Mensagens: 1723
Localização: SP
Offline
|
asaudate wrote:
Tecnoage wrote:Discordando de alguns pontos de vista: (Na verdade não acho que sejam pontos de vista, me parece mais informações que faltaram no resumo)
1- Nem sempre o maior benefício de SOA para as empresas é a integração. Na maioria das vezes o maior benefício é a agilidade na composição de distribuição dos serviços. Vide as ferramentas de BPMN que fazem "transformações automáticas" para fluxos BPEL, por exemplo. Tá certo que muito disso é socado goela abaixo pelos tool vendors.
Discordo. Composição de serviços torna as coisas mais lentas (é sempre mais lento usar ferramentas externas para compor serviços do que a própria linguagem em que estes são desenvolvidos. Ou seja, só se usa, mesmo, composição, quando os serviços são desenvolvidos em linguagens diferentes. O que caracteriza integração).
Tecnoage wrote:
2- Outra grande funcionalidade e na minha opinião uma das mais interessantes funcionalidades do ESB, é a pseudo-centralização dos serviços, que proporciona mecanismos para realização de auditorias, controle dos fluxos de mensagens, verificação mais simples e centralizada de gargalos, etc.
E o controle de SLA, e a aplicação de patterns de EAI, e o baixo acoplamento entre serviços...
Tecnoage wrote:
3- Segundo o que algém indagou sobre performance: Nao falei de performance pensando exatamente em ESBs, falei pensando emn SOA, devido ao overhead de processamento de xmls ( ou outro formato) de memória, e principalmente de I/O de arquivos texto em vez de streams. (embora para tudo isso exista algum paleativo)
Depende da ferramenta utilizada e da capacidade dela. Fazendo uma alusão, JMS também tem overhead entre serialização/desserialização de mensagens. No entanto, uma solução em JMS dá mais agilidade do que se deixar o processamento ser feito de forma assíncrona. No mundo SOA, existem soluções de CEP que só fazem agilizar o processamento. Quanto a I/O de arquivos, acho que você está equivocado. Em SOA, só existe tratamento de arquivos texto como forma de compatibilidade com as antigas práticas de EAI (onde era tudo assim).
Tecnoage wrote:
4- quanto à utilização do BAM, que alguém citou, uma curiosidade: Va verificou a quantidade de memória que o BAM precisa para funcionar??? hehehe
Concordo, às vezes, é uma quantidade absurda. Mas visibilidade compensa o preço de alguns pentes de memória, não?
[]´s!
Quando à composição dos serviços. CONCORDO, e sua afirmativa não é contrária à minha, é complementar, talvez. Porém sabemos que em termos de qualquer arquitetura, quando reforçamos segurança, por exemplo, geralmente cai performance. É só um exemplo, a mesma coisa acontece com serviços, isso todo mundo sabe, suponho que ja se deva ler isso nas entrelinhas de algumas arquiteturas.
Quanto à parte de performance, onde citei os arquivos texto. Sabemos que isso ocorre, e que deveria funcionar sempre assim, mas vá discutir com qualquer gerente de TI, depois de o pessoal da BEA/WEBLOGIC apresentarem os DBAdapters, TXTAdapters e QUALQUERCOISAADapters, para ver se eles têm a mesma opinião.
Quanto à sua última afirmação, remete um pouco à primeira. Dessa mesma maneira, deve ser "pesado" composição de serviços Vs Overhead. Ou seja, NÃO existe arquitetura de Referência em se tratando de SOA, cada cliente é um cliente, cada projeto, um novo projeto... Pensando assim: " O que seria uns pentes de memória a mais perto de toda flexibilidade que SOA oferece à organização (pelo menos como é vendido pra mesma)...
|
Arquiteto de Software
Sysped Solutions
R3 SAP CAT-83, NF-e, ECD, EFD, CT-e, MANAD, IN86
www.sysped.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2010 16:46:55
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Tecnoage wrote:
Quando à composição dos serviços. CONCORDO, e sua afirmativa não é contrária à minha, é complementar, talvez. Porém sabemos que em termos de qualquer arquitetura, quando reforçamos segurança, por exemplo, geralmente cai performance. É só um exemplo, a mesma coisa acontece com serviços, isso todo mundo sabe, suponho que ja se deva ler isso nas entrelinhas de algumas arquiteturas.
Alto lá... o que eu quis dizer foi que deve-se EVITAR composição de serviços, pela lentidão de desenvolvimento (acho que me expressei mal, anteriormente).
Tecnoage wrote:
Quanto à parte de performance, onde citei os arquivos texto. Sabemos que isso ocorre, e que deveria funcionar sempre assim, mas vá discutir com qualquer gerente de TI, depois de o pessoal da BEA/WEBLOGIC apresentarem os DBAdapters, TXTAdapters e QUALQUERCOISAADapters, para ver se eles têm a mesma opinião.
Sim, mas as pessoas devem ser instruídas em relação às melhores práticas, não ? Normalmente, as pessoas tendem a utilizar o mundo que elas já conhecem, que é o de EAI via texto (ou BD ou XYZ). No entanto, numa filosofia SOA sabemos que a melhor coisa a se fazer é integração via serviços, certo?
Eu trabalho com ferramentas Oracle (que comprou a BEA e levou o Weblogic, Aqualogic e tudo o mais). Logo, tenho à minha disposição todos estes adapters. Mesmo assim, instruímos o cliente a deixar disponível a integração tanto com arquivos texto quanto com serviços, pois acreditamos que ainda existe, sim, quem prefira fazer integração com arquivos de texto, mas a tendência é que isso diminua e as pessoas façam com serviços (em geral, gerentes e pessoas ligadas à administração de TI têm certa resistência a tecnologias relativamente novas, como SOA).
Tecnoage wrote:
Quanto à sua última afirmação, remete um pouco à primeira. Dessa mesma maneira, deve ser "pesado" composição de serviços Vs Overhead. Ou seja, NÃO existe arquitetura de Referência em se tratando de SOA, cada cliente é um cliente, cada projeto, um novo projeto... Pensando assim: " O que seria uns pentes de memória a mais perto de toda flexibilidade que SOA oferece à organização (pelo menos como é vendido pra mesma)...
Eu não falei a respeito de composição de serviços, falei de BAM. Normalmente, os benefícios do BAM não chegam nem perto do custo de alguns pentes de memória (1 ou 2, não um datacenter inteiro). E a flexibilidade de SOA é uma tendência a médio e longo prazo, não no curto prazo. Afinal, insisto... SOA é uma arquitetura de integração. Sistemas que estão em fase de desenvolvimento, expondo e consumindo serviços, tendem a ser apenas SOA-Ready, e não SOA.
[]´s
This message was edited 1 time. Last update was at 13/04/2010 16:48:22
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2010 16:00:55
|
Kenobi
GUJ Master
![[Avatar]](/images/avatar/cf2226ddd41b1a2d0ae51dab54d32c36.jpg)
Membro desde: 14/11/2003 13:06:37
Mensagens: 1678
Localização: Brasil
Offline
|
Bom amigos vamos fazer como o Jack, por partes:
ESB: Já explicaram seu papel, finalidade e vamos a alguns fatos: Muitos produtos possuem performance fantástica. O Mule possui processamento SEDA - http://www.eecs.harvard.edu/~mdw/proj/seda/ assim como o Apache Camel para Assíncrono entre outros.
Participei de um projeto que um fluxo era coreografado pelo ESB com 15 serviços diferentes e não levava 2ms para processar toda a operação - pasmem !! Claro que isso leva em conta o excelente Hardware também, mas no geral ESB tende a ser muitíssimo performático, afinal foi criado com esse propósito.
Aliás, fui o arquiteto pelo lado da Oracle-partner, responsável por esse case: http://www.oracle.com/customers/snapshots/grupo-stp-weblogic-snapshot.pdf , que acabei de citar.
Quem usa hoje ? Diversas Teles, como Tim, Claro e só pra citar um exemplo recente a Vivo está fazendo uma promoção junto com a Globo que deve passar dos 4 milhões de requisões por minuto em período de pico e toda a infraestrutura está apoiada no OSB - antigo ALSB (Aqualogic Service Bus).
[Acomplamento:
Alto lá... o que eu quis dizer foi que deve-se EVITAR composição de serviços, pela lentidão de desenvolvimento (acho que me expressei mal, anteriormente).
Na verdade hoje há outras maneiras de se manter o mesmo nível de produtividade olhando para serviços e a arquitetura RESTFul está aí pra mostrar isso.
Forte acomplamento te inibe na flexibilidade, se precisar extrair funcionalidade terá que "desacoplar" e isso é um parto de fazer. Alto acomplamento é necessário para casos específicos que exigem muita performance.
BAM: Há muitos produtos para o propósito, alguns mais performáticos outros menos, mas para a área de negócio como o Alexandre mencionou, é vital e o ganho de ter a visibilidade paga com folga os pentes adicionais
This message was edited 2 times. Last update was at 15/04/2010 16:06:24
|
----------------------------------------------------------
SOA|EXPERT - http://www.soaexpert.com.br
SOA de um jeito simples e eficiente. |
|
|
 |
|
|
|
|