Tdc 2013 eric lemes - integracoes entre sistemas-2
-
Upload
eric-lemes -
Category
Documents
-
view
388 -
download
0
Transcript of Tdc 2013 eric lemes - integracoes entre sistemas-2
![Page 1: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/1.jpg)
Globalcode – Open4education
Trilha Arquitetura .NETEric Lemes
![Page 2: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/2.jpg)
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 | [email protected]
![Page 3: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/3.jpg)
Globalcode – Open4education
Integrações entre sistemasDesafios de arquitetura corporativa, de soluções e de software
![Page 4: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/4.jpg)
Globalcode – Open4education
Arquitetura alvo
![Page 5: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/5.jpg)
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
![Page 6: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/6.jpg)
Globalcode – Open4education
Arquitetura real
![Page 7: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/7.jpg)
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
![Page 8: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/8.jpg)
Globalcode – Open4education
Desafios
Integração
Baixo acoplamento
Reuso de interfaces
![Page 9: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/9.jpg)
Globalcode – Open4education
Acoplamento
![Page 10: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/10.jpg)
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
![Page 11: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/11.jpg)
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
![Page 12: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/12.jpg)
Globalcode – Open4education
Como melhorar?
Barramento de serviços (ESB)
Ferramentas de ETL
![Page 13: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/13.jpg)
Globalcode – Open4education
Barramento de serviços (ESB – Enterprise Service Bus)
Como reduzir acoplamento?
![Page 14: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/14.jpg)
Globalcode – Open4education
Como reduzir acoplamento?
Ferramentas de ETL (Extract, transform, load)
ETLETL
![Page 15: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/15.jpg)
Globalcode – Open4education
É suficiente?
![Page 16: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/16.jpg)
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
![Page 17: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/17.jpg)
Globalcode – Open4education
Visão orientada a dados
![Page 18: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/18.jpg)
Globalcode – Open4education
Visão orientada a serviços
![Page 19: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/19.jpg)
Globalcode – Open4education
SOA - Desafios técnicos
ESBVisão request/reply
Reuso de comportamento
Geralmente implementado com REST, SOAP (Web services), Mensageria MQ
Baixo desempenho com grande volume de dados
ETLIntegração base a base ou via arquivos
Reuso de dados
Bom desempenho com grande volume de dados
![Page 20: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/20.jpg)
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
![Page 21: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/21.jpg)
Globalcode – Open4education
Transferência de arquivos
![Page 22: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/22.jpg)
Globalcode – Open4education
Transferência de arquivos
Sistema origem
Sistema origem
Sistema destino
Sistema destino
CópiaPela rede
Máquina origem
Rede
Máquina destino
![Page 23: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/23.jpg)
Globalcode – Open4education
Transferência de arquivos
Preocupações adicionaisDois 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
![Page 24: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/24.jpg)
Globalcode – Open4education
WCF – SOAP e net.tcp
X
![Page 25: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/25.jpg)
Globalcode – Open4education
WCF – SOAP e net.tcp
Método Tempos net.tcp (segundos) Tempos soap (segundos)20.000 chamadas 201,20 193,652000 chamadas em lotes de 10 40,87 39,75200 chamadas em lotes de 100 24,46 25,2020 chamadas em lotes de 1000 22,39 19,8410 chamadas em lotes de 2000 20,23 18,82
5 chamadas em lotes de 4000 18,44 19,004 chamadas em lotes de 5000 18,69 17,94
Máquina origem
Rede
Máquina destino
![Page 26: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/26.jpg)
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
![Page 27: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/27.jpg)
Globalcode – Open4education
TCP – 1ª tentativa
Cliente e servidor single-threaded
Implementação síncrona
Máquina origem
Rede
Máquina destino
![Page 28: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/28.jpg)
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
![Page 29: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/29.jpg)
Globalcode – Open4education
MSMQ, Websphere MQ e RabbitMQ
![Page 30: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/30.jpg)
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
![Page 31: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/31.jpg)
Globalcode – Open4education
TCP – 2ª tentativa
![Page 32: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/32.jpg)
Globalcode – Open4education
Os números!
![Page 33: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/33.jpg)
Globalcode – Open4education
Aprendizados
Aderência a ESBAderentes: MQ, SOAP
Não aderentes: arquivos, net.tcp, HTTP request, TCP
Particionamento de respostasAderente: MQ, TCP
Não aderente: todos os outros
Facilidade de implementação:Fácil: Web services, net.tcp
Médio: MQ
Dolorido: TCP
![Page 34: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/34.jpg)
Globalcode – Open4education
O guia prático!
Serviços = visão negócioEliminar 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
![Page 35: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/35.jpg)
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
![Page 36: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/36.jpg)
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.
![Page 37: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/37.jpg)
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
![Page 38: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/38.jpg)
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)
![Page 39: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/39.jpg)
Globalcode – Open4education
Cenário possível
![Page 40: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/40.jpg)
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
![Page 41: Tdc 2013 eric lemes - integracoes entre sistemas-2](https://reader033.fdocuments.in/reader033/viewer/2022060122/55963bbc1a28ab9f738b46a7/html5/thumbnails/41.jpg)
Globalcode – Open4education
OBRIGADO!Eric Lemes