Globalcode – Open4education
Trilha Arquitetura .NET
Eric Lemes
Globalcode – Open4education
Eric Lemes
Desenvolvedor
Blogueiro
Participante da comunidade .NET Architects
Participante eve...
Globalcode – Open4education
Integrações entre sistemas
Desafios de arquitetura corporativa, de soluções e de
software
Globalcode – Open4education
Arquitetura alvo
Globalcode – Open4education
Arquitetura alvo
Sistema único
Atende todos os domínios funcionais
Uma única tecnologia
Um ban...
Globalcode – Open4education
Arquitetura real
Globalcode – Open4education
Arquitetura real
Diversos sistemas: in house, pacotes, legados
Cada sistema atende uma ou mais...
Globalcode – Open4education
Desafios
Integração
Baixo acoplamento
Reuso de interfaces
Globalcode – Open4education
Acoplamento
Globalcode – Open4education
Acoplamento
Número de suposições que uma parte faz sobre a
outra quando estão trocando informa...
Globalcode – Open4education
Integrações ponto a ponto
Interfaces diferentes para compartilhar a mesma
informação
Desenvolv...
Globalcode – Open4education
Como melhorar?
Barramento de serviços (ESB)
Ferramentas de ETL
Globalcode – Open4education
Barramento de serviços (ESB – Enterprise Service
Bus)
Como reduzir acoplamento?
Globalcode – Open4education
Como reduzir acoplamento?
Ferramentas de ETL (Extract, transform, load)
ETLETL
Globalcode – Open4education
É suficiente?
Globalcode – Open4education
SOA - mais uma
tentativa de definição
Visualizar serviços invés de sistemas
(implementações)
E...
Globalcode – Open4education
Visão orientada a dados
Globalcode – Open4education
Visão orientada a serviços
Globalcode – Open4education
SOA - Desafios técnicos
ESB
Visão request/reply
Reuso de comportamento
Geralmente implementado...
Globalcode – Open4education
SOA – Desafios técnicos
É possível implementar uma arquitetura orientada
a serviços para cenár...
Globalcode – Open4education
Transferência de arquivos
Globalcode – Open4education
Transferência de arquivos
Sistema
origem
Sistema
origem
Sistema
destino
Sistema
destino
Cópia
...
Globalcode – Open4education
Transferência de arquivos
Preocupações adicionais
Dois processos não podem ler arquivos
simult...
Globalcode – Open4education
WCF – SOAP e net.tcp
X
Globalcode – Open4education
WCF – SOAP e net.tcp
Método Tempos net.tcp (segundos) Tempos soap (segundos)
20.000 chamadas 2...
Globalcode – Open4education
HTTP Request
Único request com todos os dados
Muito consumo de memória = paginação em disco
Pr...
Globalcode – Open4education
TCP – 1ª tentativa
Cliente e servidor single-threaded
Implementação síncrona
Máquina origem
Re...
Globalcode – Open4education
MSMQ, Websphere MQ e
RabbitMQ
Cliente coloca requisição na fila, em pedaços
Segunda thread no ...
Globalcode – Open4education
MSMQ, Websphere MQ e
RabbitMQ
Globalcode – Open4education
TCP – 2ª tentativa
Implementação multi-threaded simulando comportamento do MQ
Cliente
Thread p...
Globalcode – Open4education
TCP – 2ª tentativa
Globalcode – Open4education
Os números!
Globalcode – Open4education
Aprendizados
Aderência a ESB
Aderentes: MQ, SOAP
Não aderentes: arquivos, net.tcp, HTTP reques...
Globalcode – Open4education
O guia prático!
Serviços = visão negócio
Eliminar visão técnica: eliminar pensamento de
protoc...
Globalcode – Open4education
O guia prático!
Para desempenho, prefira o assíncrono invés do
síncrono
Visão assíncrona minim...
Globalcode – Open4education
O guia prático!
Qual tecnologia usar?
Web service e net.tcp: Fácil implementação, baixo
desemp...
Globalcode – Open4education
Arquitetura do software
Reuse seu domínio!
Se sua camada de apresentação e seus serviços não
c...
Globalcode – Open4education
Arquitetura do software
Uma única porta de entrada e uma única porta de
saída
Não deve existir...
Globalcode – Open4education
Cenário possível
Globalcode – Open4education
Referências
[EIP] Hohpe G., Woolf, B. Enterprise application patterns:
designing, building and...
Globalcode – Open4education
OBRIGADO!
Eric Lemes
Próximos SlideShares
Carregando em…5
×

Tdc 2013 eric lemes - integracoes entre sistemas-2

659 visualizações

Publicada em

1 comentário
0 gostaram
Estatísticas
Notas
  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
659
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
12
Comentários
1
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tdc 2013 eric lemes - integracoes entre sistemas-2

  1. 1. Globalcode – Open4education Trilha Arquitetura .NET Eric Lemes
  2. 2. Globalcode – Open4education Eric Lemes Desenvolvedor Blogueiro Participante da comunidade .NET Architects Participante eventual do Void Podcast ( http://voidpodcast.com) por falta de convite. Criador do MSBuildCodeMetrics - http://ericlemes.github.io/MSBuildCodeMetrics/ @eric_lemes | ericlemes.com | linkedin.com/in/ericlemes | ericlemes@gmail.com
  3. 3. Globalcode – Open4education Integrações entre sistemas Desafios de arquitetura corporativa, de soluções e de software
  4. 4. Globalcode – Open4education Arquitetura alvo
  5. 5. Globalcode – Open4education Arquitetura alvo Sistema único Atende todos os domínios funcionais Uma única tecnologia Um banco de dados, normalizado e íntegro Sem duplicidade de informações e funções Sem necessidade de integração
  6. 6. Globalcode – Open4education Arquitetura real
  7. 7. Globalcode – Open4education Arquitetura real Diversos sistemas: in house, pacotes, legados Cada sistema atende uma ou mais partes do processo negócio (domínios) Sobreposição funcional Diversas tecnologias Diversos bancos de dados, com redundância e replicação de dados Integrações ponto a ponto
  8. 8. Globalcode – Open4education Desafios Integração Baixo acoplamento Reuso de interfaces
  9. 9. Globalcode – Open4education Acoplamento
  10. 10. Globalcode – Open4education Acoplamento Número de suposições que uma parte faz sobre a outra quando estão trocando informações [EAP] Endereço do banco de dados Estrutura do banco de dados Endereço do serviço Contrato do serviço Protocolo Maior quantidade de suposições = maior acoplamento
  11. 11. Globalcode – Open4education Integrações ponto a ponto Interfaces diferentes para compartilhar a mesma informação Desenvolvedores investindo mais tempo resolvendo problemas de integração em detrimento ao código de negócio
  12. 12. Globalcode – Open4education Como melhorar? Barramento de serviços (ESB) Ferramentas de ETL
  13. 13. Globalcode – Open4education Barramento de serviços (ESB – Enterprise Service Bus) Como reduzir acoplamento?
  14. 14. Globalcode – Open4education Como reduzir acoplamento? Ferramentas de ETL (Extract, transform, load) ETLETL
  15. 15. Globalcode – Open4education É suficiente?
  16. 16. Globalcode – Open4education SOA - mais uma tentativa de definição Visualizar serviços invés de sistemas (implementações) Estabelecer contratos de serviço com visão de negócio Possibilidade de trocar sistemas inteiros com maior facilidade
  17. 17. Globalcode – Open4education Visão orientada a dados
  18. 18. Globalcode – Open4education Visão orientada a serviços
  19. 19. Globalcode – Open4education SOA - Desafios técnicos ESB Visão request/reply Reuso de comportamento Geralmente implementado com REST, SOAP (Web services), Mensageria MQ Baixo desempenho com grande volume de dados ETL Integração base a base ou via arquivos Reuso de dados Bom desempenho com grande volume de dados
  20. 20. Globalcode – Open4education SOA – Desafios técnicos É possível implementar uma arquitetura orientada a serviços para cenários de grande volume de dados? Pouca ou nenhuma literatura sobre o assunto Pesquisa envolvendo 9 cenários de integração Objetivo: Qual o melhor método para transferir grande volume de dados em cenário request/reply? Volume de 1.000.000 registros ~14Mb request ~291Mb response
  21. 21. Globalcode – Open4education Transferência de arquivos
  22. 22. Globalcode – Open4education Transferência de arquivos Sistema origem Sistema origem Sistema destino Sistema destino Cópia Pela rede Máquina origem Rede Máquina destino
  23. 23. Globalcode – Open4education Transferência de arquivos Preocupações adicionais Dois processos não podem ler arquivos simultaneamente File watcher? Arquivo bastão? Sim, precisa de espaço em disco Sim, I/O costuma ser lento
  24. 24. Globalcode – Open4education WCF – SOAP e net.tcp X
  25. 25. Globalcode – Open4education WCF – SOAP e net.tcp Método Tempos net.tcp (segundos) Tempos soap (segundos) 20.000 chamadas 201,20 193,65 2000 chamadas em lotes de 10 40,87 39,75 200 chamadas em lotes de 100 24,46 25,20 20 chamadas em lotes de 1000 22,39 19,84 10 chamadas em lotes de 2000 20,23 18,82 5 chamadas em lotes de 4000 18,44 19,00 4 chamadas em lotes de 5000 18,69 17,94 Máquina origem Rede Máquina destino
  26. 26. Globalcode – Open4education HTTP Request Único request com todos os dados Muito consumo de memória = paginação em disco Processamento do response assíncrono, do request não Máquina origem Rede Máquina destino
  27. 27. Globalcode – Open4education TCP – 1ª tentativa Cliente e servidor single-threaded Implementação síncrona Máquina origem Rede Máquina destino
  28. 28. Globalcode – Open4education MSMQ, Websphere MQ e RabbitMQ Cliente coloca requisição na fila, em pedaços Segunda thread no cliente ouve respostas na fila Servidor ouve fila de entrada Conforme servidor vai processando o request, insere respostas na fila (em nacos) Máquina origem Rede Máquina destino
  29. 29. Globalcode – Open4education MSMQ, Websphere MQ e RabbitMQ
  30. 30. Globalcode – Open4education TCP – 2ª tentativa Implementação multi-threaded simulando comportamento do MQ Cliente Thread principal coloca requisição, de forma sequencial Thread secundária ouve resposta, para cada resposta dispara uma worker thread Servidor Thread principal processa requisição, enfileirando cada request Thread secundária desempilha e processa requisições Máquina origem Rede Máquina destino
  31. 31. Globalcode – Open4education TCP – 2ª tentativa
  32. 32. Globalcode – Open4education Os números!
  33. 33. Globalcode – Open4education Aprendizados Aderência a ESB Aderentes: MQ, SOAP Não aderentes: arquivos, net.tcp, HTTP request, TCP Particionamento de respostas Aderente: MQ, TCP Não aderente: todos os outros Facilidade de implementação: Fácil: Web services, net.tcp Médio: MQ Dolorido: TCP
  34. 34. Globalcode – Open4education O guia prático! Serviços = visão negócio Eliminar visão técnica: eliminar pensamento de protocolo, método de construção ao pensar o serviço Pensar em parâmetros de entrada e saída. Visão transacional Blocos de reuso que façam sentido para o negócio
  35. 35. Globalcode – Open4education O guia prático! Para desempenho, prefira o assíncrono invés do síncrono Visão assíncrona minimiza espera entre consumidor e provedor AssíncronoSíncrono
  36. 36. Globalcode – Open4education O guia prático! Qual tecnologia usar? Web service e net.tcp: Fácil implementação, baixo desempenho, pouco seguro em cenários transacionais. Primeira escolha em cenários síncronos. MQ: Implementação mais difícil, alto desempenho (força modelo assíncrono), melhor para cenário transacional. Primeira escolha em cenários assíncronos. Qual formato usar? XML: fácil de interpretar, pesado CSV e posicional: chato de interpretar, leve na maioria dos casos. Boa idéia em cenários de alto volume.
  37. 37. Globalcode – Open4education Arquitetura do software Reuse seu domínio! Se sua camada de apresentação e seus serviços não compartilham a mesma lógica, algo está errado. Se existem métodos de acesso a dados específicos para os serviços, algo está errado
  38. 38. Globalcode – Open4education Arquitetura do software Uma única porta de entrada e uma única porta de saída Não deve existir código de integração específico para cada sistema destino Não deve existir mais de um código de integração para mesma função de negócio Traduções, enriquecimentos, transformações são funções do ESB! Existem diversas alternativas abertas para ESB’s O conceito do ESB pode ser aplicado sem a aquisição de uma ferramenta Enterprise Integration Patterns (EIP)
  39. 39. Globalcode – Open4education Cenário possível
  40. 40. Globalcode – Open4education Referências [EIP] Hohpe G., Woolf, B. Enterprise application patterns: designing, building and deploying messaging solutions. Addison- Wesley professional, 2003. Linthicum, D. Enterprise application integration. Addison-Wesley professional, 1999 Ruh, W., Maginnis, F, Brown W. Enterprise application integration: a Wiley tech brief. Wiley, 2000. http://ericlemes.com/indice - Integrações entre sistemas https://github.com/ericlemes/IntegrationTests
  41. 41. Globalcode – Open4education OBRIGADO! Eric Lemes

×