O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Integração de Sistemas utilizando Apache Camel

535 visualizações

Publicada em

Apresentação na academia UOL sobre Integração de Sistemas utilizando Apache Camel.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Integração de Sistemas utilizando Apache Camel

  1. 1. Integração de Sistemas utilizando Apache Camel Felipe Archangelo Pedro Oliveira Gabriel Nagib P&D E-Commerce (Gateway) Agosto/2013
  2. 2.  Introdução à Integração de Sistemas  Projeto Rotterdam  Introdução ao Apache Camel  Apache Camel na Prática  Cases Rotterdam  Quem já está usando Agenda 2
  3. 3. Arquitetura Monolítica Introdução à Integração de Sistemas 3 Sistema
  4. 4. Introdução à Integração de Sistemas 4 Arquitetura Monolítica
  5. 5. Introdução à Integração de Sistemas 5 Arquitetura Composta (Componentizada)
  6. 6. Introdução à Integração de Sistemas 6 Soluções de Integração 1. Banco de Dados Compartilhado  Muito comum no SAP – inclusive no UOL  Asynch 2. Transferência de Arquivos  FTP, NFS  EDI, TXT posicional, XML  Instituições bancárias/Adquirentes  Asynch
  7. 7. Introdução à Integração de Sistemas 7 Soluções de Integração 3. RPC – Remote Procedure Calls  RMI  JNI  WS  Synch 4. Messageria  JMS  Asynch
  8. 8. Introdução à Integração de Sistemas 8 Enterprise Application Integration (EAI)  Interoperabilidade  Integração de dados  Desacoplamento, estabilidade, escalabilidade  Tolerância a falhas  Eliminação de gargalos
  9. 9. Introdução à Integração de Sistemas 9 Evolução da Programação  Design Patterns  Creational (Factory, Builder, etc)  Structural (Adapter, Facade, etc)  Behavorial (Strategy, Iterator, etc) Evolução da Integração  EAI Patterns  Endpoint (Gateway, Dispatcher, Consumer, etc)  Message (Command Msg, Event Msg, etc)  Channel (Point-to-Point, Publish-Subscribe, etc)  Routing (Filter, Splitter, Aggregator, etc)  Transformation (Content-Enricher, Normalizer, etc)
  10. 10. Projeto Rotterdam – Fase I 10 Motivação Meios
  11. 11. Projeto Rotterdam – Fase I 11 DEPOIS ANTES
  12. 12. Projeto Rotterdam – Fase I 12 DEPOIS ANTES (escopo PCI)
  13. 13. Projeto Rotterdam – Fase I 13 DEPOIS ANTES (mesma interface de integração com o cliente)
  14. 14. Projeto Rotterdam – Fase I 14 Desafio Adicional: diferentes tecnologias de publicação de Web Services utilizadas pelo BPag
  15. 15. Projeto Rotterdam – Fase I 15 Requisitos Funcionais  PCI-compliance  Roteamento de requisições HTTP  Transformação de requisições HTTP  Transparente para o usuário (manter interfaces de entrada)  Fail-over de transações  Suporte a múltiplas tecnologias de publicação de WebServices (Axis, CXF, Spring-WS, etc)  Integração com Jacareí e DF Requisitos Não-Funcionais  Suporte a carga (pelo menos 3 transações/segundo)  Mínimo esforço de mudança possível
  16. 16. 16 Concise Application Message Exchange Language Introdução ao Apache Camel
  17. 17. 17 Concise Application Message Exchange Language Introdução ao Apache Camel O que é?  Framework Open Source de Integração Baseado em EAI Patterns  API Única Independente do Componente (CXF, ActiveMQ, MINA)  Suporte a Vários Tipos de Transporte (HTTP, JMS, NIO) Por que optamos pelo uso do Camel?  Java Based Fluent API (Menos Config. XML)  Integração com Spring sem Remendos  Facilidade para Lidar com Payloads Diferentes  Suporte a Testes Unitários
  18. 18. Introdução ao Apache Camel 18 Figure 1: High level view of Camel's architecture (from Camel in Action). Arquitetura do Framework
  19. 19. 19 A Camel can travel for great distances without water; similarly a Camel does not require bucket loads of XML as you can use a pure Java DSL Apache Camel na Prática Routes  RouteBuilder - Classes utilizada para criação de rotas utilizando a DSL  SpringRouteBuilder - Integração com Spring  Invocadas pelo CamelContext durante o load da aplicação
  20. 20. Apache Camel na Prática 20 Endpoints  Análogos ao padrão Message Endpoint  Podem ser Producer ou Consumer  Normalmente criados pelos componentes do Camel  Referenciados com Camel DSL via URIs
  21. 21. 21 Roteamento e Mediação usando Apache Camel CamelContext  Contém as configurações de Rotas e Definição de Endpoints  Encapsula o Registry (uso de Spring facultativo )  Mesmo contexto do Spring pode ter diversos CamelContexts  O “context-scan” do Camel funciona como o “component-scan” do Spring
  22. 22. Componentes Suportados? . “A Camel can carry 4 times the load of other beasts of burden” Apache Camel na Prática 22 http://camel.apache.org/components.html
  23. 23. Case #1: Transformação de requisições HTTP (Rotterdam) 23
  24. 24. Case #1: Transformação de requisições HTTP (Rotterdam) 24 Utilização do EAI Pattern “Message Transformer” – Content Enricher (egw-proxy-pci-in)
  25. 25. Case #2: Roteamento de requisições HTTP (Rotterdam) 25 Emaranhado de integrações HTTP Como garantir fail-over em todo o fluxo?
  26. 26. Case #2: Roteamento de requisições HTTP (Rotterdam) 26 Utilização do EAI Pattern “Message Router” (egw-router)
  27. 27. Quem já está usando – Jacareí Consumo de arquivo 27 • Processamento de arquivo EDI • Cada registro do arquivo é transformado em uma mensagem JMS
  28. 28. Quem já está usando – Jacareí Job schedulado 28 • Job roda 2x por dia • Diversos registros do banco de dados são transformados em um arquivo de remessa, que é transferido para a instituição financeira
  29. 29. Dúvidas ? 29
  30. 30. Referências e material de apoio 30  Apache Camel http://camel.apache.org/  Enterprise Application Patterns http://www.eaipatterns.com/ http://books.google.com.br/books/about/Enterprise_Integration_Patterns.html?id=qqB7nrr na_sC&redir_esc=y  Camel Dev – Avoiding Anti-Patterns http://makingdevsimple.blogspot.com.br/2012/08/apache-camel-antipatterns.html

×