Integração de Sistemas
utilizando
Apache Camel
Felipe Archangelo
Pedro Oliveira
Gabriel Nagib
P&D E-Commerce (Gateway)
Agosto/2013
 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
Arquitetura Monolítica
Introdução à Integração de Sistemas
3
Sistema
Introdução à Integração de Sistemas
4
Arquitetura Monolítica
Introdução à Integração de Sistemas
5
Arquitetura Composta (Componentizada)
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
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
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
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)
Projeto Rotterdam – Fase I
10
Motivação
Meios
Projeto Rotterdam – Fase I
11
DEPOIS
ANTES
Projeto Rotterdam – Fase I
12
DEPOIS
ANTES
(escopo PCI)
Projeto Rotterdam – Fase I
13
DEPOIS
ANTES
(mesma interface de integração com o cliente)
Projeto Rotterdam – Fase I
14
Desafio Adicional: diferentes tecnologias de
publicação de Web Services
utilizadas pelo BPag
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
Concise
Application
Message
Exchange
Language
Introdução ao Apache Camel
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
Introdução ao Apache Camel
18
Figure 1: High level view of Camel's architecture (from Camel in Action).
Arquitetura do Framework
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
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
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
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
Case #1: Transformação de requisições HTTP
(Rotterdam)
23
Case #1: Transformação de requisições HTTP
(Rotterdam)
24
Utilização do EAI Pattern “Message Transformer” – Content Enricher
(egw-proxy-pci-in)
Case #2: Roteamento de requisições HTTP
(Rotterdam)
25
Emaranhado de integrações HTTP
Como garantir fail-over em todo o fluxo?
Case #2: Roteamento de requisições HTTP
(Rotterdam)
26
Utilização do EAI Pattern “Message Router”
(egw-router)
Quem já está usando – Jacareí
Consumo de arquivo
27
• Processamento de arquivo EDI
• Cada registro do arquivo é transformado em uma mensagem JMS
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
Dúvidas ?
29
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

Integração de Sistemas utilizando Apache Camel

  • 1.
    Integração de Sistemas utilizando ApacheCamel Felipe Archangelo Pedro Oliveira Gabriel Nagib P&D E-Commerce (Gateway) Agosto/2013
  • 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.
    Arquitetura Monolítica Introdução àIntegração de Sistemas 3 Sistema
  • 4.
    Introdução à Integraçãode Sistemas 4 Arquitetura Monolítica
  • 5.
    Introdução à Integraçãode Sistemas 5 Arquitetura Composta (Componentizada)
  • 6.
    Introdução à Integraçãode 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.
    Introdução à Integraçãode Sistemas 7 Soluções de Integração 3. RPC – Remote Procedure Calls  RMI  JNI  WS  Synch 4. Messageria  JMS  Asynch
  • 8.
    Introdução à Integraçãode Sistemas 8 Enterprise Application Integration (EAI)  Interoperabilidade  Integração de dados  Desacoplamento, estabilidade, escalabilidade  Tolerância a falhas  Eliminação de gargalos
  • 9.
    Introdução à Integraçãode 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.
    Projeto Rotterdam –Fase I 10 Motivação Meios
  • 11.
    Projeto Rotterdam –Fase I 11 DEPOIS ANTES
  • 12.
    Projeto Rotterdam –Fase I 12 DEPOIS ANTES (escopo PCI)
  • 13.
    Projeto Rotterdam –Fase I 13 DEPOIS ANTES (mesma interface de integração com o cliente)
  • 14.
    Projeto Rotterdam –Fase I 14 Desafio Adicional: diferentes tecnologias de publicação de Web Services utilizadas pelo BPag
  • 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.
  • 17.
    17 Concise Application Message Exchange Language Introdução ao ApacheCamel 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.
    Introdução ao ApacheCamel 18 Figure 1: High level view of Camel's architecture (from Camel in Action). Arquitetura do Framework
  • 19.
    19 A Camel cantravel 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.
    Apache Camel naPrá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 Roteamento e Mediaçãousando 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.
    Componentes Suportados? . “A Camelcan carry 4 times the load of other beasts of burden” Apache Camel na Prática 22 http://camel.apache.org/components.html
  • 23.
    Case #1: Transformaçãode requisições HTTP (Rotterdam) 23
  • 24.
    Case #1: Transformaçãode requisições HTTP (Rotterdam) 24 Utilização do EAI Pattern “Message Transformer” – Content Enricher (egw-proxy-pci-in)
  • 25.
    Case #2: Roteamentode requisições HTTP (Rotterdam) 25 Emaranhado de integrações HTTP Como garantir fail-over em todo o fluxo?
  • 26.
    Case #2: Roteamentode requisições HTTP (Rotterdam) 26 Utilização do EAI Pattern “Message Router” (egw-router)
  • 27.
    Quem já estáusando – Jacareí Consumo de arquivo 27 • Processamento de arquivo EDI • Cada registro do arquivo é transformado em uma mensagem JMS
  • 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.
  • 30.
    Referências e materialde 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