SlideShare uma empresa Scribd logo
1 de 30
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

Mais conteúdo relacionado

Semelhante a Apache Camel Integration Using Messages

Apache Camel
Apache CamelApache Camel
Apache CamelPT.JUG
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Jeison Barros
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)DNAD
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeSpecta TI
 
Laravel 5
Laravel 5Laravel 5
Laravel 5DevMT
 
Produtividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelProdutividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelAlessandro Kieras
 
AAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcambAAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcambMicrosoft Brasil
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerMarkus Christen
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Leandro Gomes
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoRenato Groff
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBEdgar Silva
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Luciano Condé
 

Semelhante a Apache Camel Integration Using Messages (20)

Apache Camel
Apache CamelApache Camel
Apache Camel
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, Fake
 
Laravel 5
Laravel 5Laravel 5
Laravel 5
 
Produtividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelProdutividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache Camel
 
AAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcambAAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcamb
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Web service
Web serviceWeb service
Web service
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
IBM WebSphere Portal
IBM WebSphere PortalIBM WebSphere Portal
IBM WebSphere Portal
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESB
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4
 

Apache Camel Integration Using Messages

  • 1. Integração de Sistemas utilizando Apache Camel 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ção de Sistemas 4 Arquitetura Monolítica
  • 5. Introdução à Integração de Sistemas 5 Arquitetura Composta (Componentizada)
  • 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. 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. 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. 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. 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
  • 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. Introdução ao Apache Camel 18 Figure 1: High level view of Camel's architecture (from Camel in Action). Arquitetura do Framework
  • 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. 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 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. 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. Case #1: Transformação de requisições HTTP (Rotterdam) 23
  • 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. Case #2: Roteamento de requisições HTTP (Rotterdam) 25 Emaranhado de integrações HTTP Como garantir fail-over em todo o fluxo?
  • 26. Case #2: Roteamento de 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
  • 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