SlideShare una empresa de Scribd logo
Enterprise Integration Patterns
Apache Camel
                        Domingo Suárez Torres
                                         CTO
                                     SynergyJ
Objetivo


      Comprender los beneficios de
       usar Patrones para Integrar
          aplicaciones usando
     OpenSource con Apache Camel




                                     2
Agenda
• Patrones de diseño
• Patrones de Integración Empresarial (EIP)
• Integración en la plataforma Java
  – Bajo nivel
     • Sockets
     • WebServices
     • EJB
        – SessionBeans
        – Message Driven Beans (JMS)
  – Alto nivel
     • J2EE Connector Architecture (JCA)
     • Java Business Integration (JBI)
• Caso de estudio con Apache Camel            3
Patrones de Diseño



           Antecedentes




                          4
Volumen I

• En 1979 el arquitecto Christopher
  Alexander escribe:
  – “The Timeless Way of Building”
• El libro en Google Books
  – http://bit.ly/qK1nH




                                      5
Volumen II

• Editado en 1977
• Libro en Google Books
  – http://bit.ly/14NKKk




                           6
The Timeless Way of Building

• En el libro se propone el aprendizaje y uso
  de una serie de patrones para la
  construcción de edificios de una mayor
  calidad.




                                                7
The Timeless Way of Building

• "Cada patrón describe un problema que
  ocurre infinidad de veces en nuestro
  entorno, así como la solución al mismo, de
  tal modo que podemos utilizar esta
  solución un millón de veces más adelante
  sin tener que volver a pensarla otra vez."




                                               8
OOPSLA-87

• En 1987, Ward Cunningham y Kent Beck
  usan las ideas de Alexander y publican un
  articulo
• Using Pattern Languages for OO
  Programs.
• http://bit.ly/o8YkZ




                                              9
Principios de los 90’s

• Se edita en 1995
• Usa una estructura muy
  estructurada para explicar
  los patrones:
  – Nombre del patrón
  – Problema
  – Solución
  – Consecuencias


                               10
Enterprise Integration Patterns


      Evolución de los patrones de
          diseño a contextos más
      específicos, en este caso a la
       integración de aplicaciones.




                                       11
Necesidad de la integración

• Aplicaciones legadas.
• Variedad de plataformas y tecnologías.
• Carencia de estándares bien definidos.
  – Cada proveedor define su tecnología.
• Aplicaciones de terceros
• eGoverment
• Socios comerciales


                                           12
Aplicaciones de integración

• Necesarias para servir de puente entre las
  aplicaciones
• Traduce y adapta tipos de datos
• Se encarga del medio de transporte asi
  como del protocolo
• En el mercado existen productos para este
  tipo de necesidades



                                           13
Mercado

• Enterprise Service Bus
  – Progress Software
  – Oracle
  – Sun
  – IBM
  – Tibco
• Mucho dinero $



                           14
OpenSource

•   Apache ServiceMix
•   OpenESB
•   Mule
•   Fuse
•   Apache Camel es la base de varios de
    estos proyectos




                                           15
Volvamos a lo básico

• Patrones
  – Casi todos los problemas de integración ya
    han sido resueltos
  – Muchos patrones están construidos en los
    diversos productos, ya sean propietarios o de
    código abierto.
  – Necesario documentarse en el tema.




                                                    16
Literatura

• Publicado en 2004
• Excelente referencia para
  diseñar y construir
  aplicaciones de integración.
• Recopila 65 patrones para
  integrar aplicaciones.
• Plantea a la mensajería
  como piedra angular para la
  integración.

                                 17
Enterprise Integration Patterns
• Plantea una nomenclatura estándar para
  modelado y diseño de la solución.




                                           18
Apache Camel



       Me gusta el OpenSource.
    A veces no tenemos dinero para
           adquirir licencias.




                                     19
Apache Camel

• Es un poderoso framework que implementa
  gran cantidad de los EIP
• http://camel.apache.org




                                        20
Apache Camel

• Bajo la licencia Apache 2.0
• Puedes implementar reglas de ruteo y
  mediación con:
  – Un Domain Specific Language (DSL) basado
    en Java
  – Con XML (Spring)
  – Con un DSL en Scala
• Utiliza URIs para identificar los endpoints
  de la aplicación

                                                21
Apache Camel



      Conceptos Fundamentales




                                22
Endpoint
• Es un termino común usado en
  comunicaciones del tipo inter-proceso (inter-
  process communication)
• Dependiendo del contexto, un endpoint
  puede referirse a una dirección, como el par
  servidor:puerto, para una comunicación
  basada en TCP
• O puede ser una entidad de software que
  responde a una dirección,
• Ejemplo:
   – www.servidor.com:80
                                              23
Tipos de Endpoint

•   ServerSocket o ClientSocket
•   Un WebService
•   Un Archivo
•   Servidor de FTP
•   Un Destination de JMS
•   Una dirección de correo
•   Un Plain Old Java Object (POJO)
• ¿Se entiende la idea?
                                      24
URIs

• Uniform Resource Identifier
• Sirven para identificar los endpoints
• Desacopla el componente que va a ser
  usado
• Es similar a una URL
• Ejemplo:
  – foo:0000-0000-9E59-0000-5E-2



                                          25
CamelContext

• Es un objeto que representa el sistema de
  ejecución de Camel
• Administra el ciclo de vida de los
  componentes configurados en Camel




                                              26
Componentes

• EndpointFactory es un mejor nombre,
  componente es un nombre confuso
• Se necesita un URI para crear el
  componente
• Ejemplos:
      myCamelContext.getEndpoint("pop3://
      john.smith@mailserv.example.com?
      password=myPassword");

      myCamelContext.getEndpoint("ftp://server?
      user=ss&password=myPassword");
                                                  27
Tipos de componentes
• Apache Camel soporta múltiples
  componentes entre ellos:
  – JMS
  – FTP
  – POP3, SMTP
  – WebServices
  – Archivos
  – Protocolo FIX
  – Hibernate
  – HL7 (Estandar Médico)
  – Sockets con Apache Mina
                                   28
Caso de estudio



     Cámara de Compensación del
        Mercado de Derivados




                                  29
Requerimiento

• Recibir los hechos de operaciones del
  mercado mexicano de derivados
• Validar la información.
• Integrarla a los diversos sistemas de la
  cámara de compensación
  – AS/400 con RPG y Cobol
  – Java EE sobre Solaris con WebLogic y Oracle
• Monitorear la actividad del mercado para
  realizar operaciones preventivas y
  correctivas
                                                  30
Detalle aburrido
• Recibir tramas de información través de un
  Socket.
• Separar los registros recibidos
• Validar numero de secuencia
• Bitacorar el registro
• Ejecutar lógica de negocio
• Generar reporte estadístico de la
  información
• Integrar información al sistema de la
  empresa
                                           31
Solución

• Uso de SpringFramework
• Camel se integra sin problemas con Spring
• Escritura de reglas de ruteo y mediación
  simples y sencillas
• El desarrollo se concentro en escribir
  POJOS, nada complicado y fácil de probar.
• Altamente personalizable y configurable
• Sin costo de licencias.

                                          32
Demo



       Manos a la obra¡¡




                           33
Preguntas y Respuestas

              domingo.suarez@synergyj.com
                          twitter.com/domix

Más contenido relacionado

DOCX
Lab manual asp.net
PDF
P4/FPGA, Packet Acceleration
PPTX
cc business and consumer application.pptx
PPT
Web Development on Web Project Presentation
PDF
Cloud Computing and Service oriented Architecture
PPTX
Introduction to Simplified instruction computer or SIC/XE
PPTX
[OOP - Lec 04,05] Basic Building Blocks of OOP
Lab manual asp.net
P4/FPGA, Packet Acceleration
cc business and consumer application.pptx
Web Development on Web Project Presentation
Cloud Computing and Service oriented Architecture
Introduction to Simplified instruction computer or SIC/XE
[OOP - Lec 04,05] Basic Building Blocks of OOP

La actualidad más candente (20)

PDF
Subnetting Principles Worksheet
PPTX
IBM Cloud Computing
PPTX
Assembler - System Programming
PPT
Si pp introduction_2
PPTX
Self-Diagnosis Hospital Management System
PDF
Srs documentation
PPTX
Loader and Its types
PDF
Macro-processor
DOCX
Food delivery application report
PPSX
Spr ch-02
PDF
Burp suite
PPT
Content Management System
PPTX
Security in NodeJS applications
PPTX
virtual hosting and configuration
PPTX
Introduction to Cloud Storage
PPTX
System Programming- Unit I
PPTX
IBM Cloud Introduction
PDF
Introduction to Web Services
ODP
Mobile App Security Testing -2
PPTX
Web Application
Subnetting Principles Worksheet
IBM Cloud Computing
Assembler - System Programming
Si pp introduction_2
Self-Diagnosis Hospital Management System
Srs documentation
Loader and Its types
Macro-processor
Food delivery application report
Spr ch-02
Burp suite
Content Management System
Security in NodeJS applications
virtual hosting and configuration
Introduction to Cloud Storage
System Programming- Unit I
IBM Cloud Introduction
Introduction to Web Services
Mobile App Security Testing -2
Web Application
Publicidad

Similar a SG 09 Patrones de Integración Empresarial Apache Camel (Draft) (20)

PDF
SG 09 Patrones de Integración Empresarial Apache Camel
PDF
Construcción de Aplicaciones de Avanzada con Geo-Distribución
KEY
Ruby on Rails en Grandes Companias, Casos Reales
PDF
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
PPTX
Mada metodología ágil de desarrollo de apis
PDF
Semana 2 Configuración entorno de desarrollo
PDF
Introdución a la web: HTTP, URL y HTML
PDF
Yupp PHP Framework
PPTX
Motor De Bases De Datos Oracle
PPTX
ORACLE
PDF
Cómo elegir un servidor Web
PPTX
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
PPTX
Motor De Bases De Datos Oracle
PPTX
Motor De Bases De Datos Oracle
PDF
¿Cómo elegir servidor web?
PPTX
Framework Catalyst
PDF
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
PPTX
ASP.NET MVC
PPTX
Lenguaje de programación javascript
PDF
Optimización de aplicaciones PHP (server side)
SG 09 Patrones de Integración Empresarial Apache Camel
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Ruby on Rails en Grandes Companias, Casos Reales
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Mada metodología ágil de desarrollo de apis
Semana 2 Configuración entorno de desarrollo
Introdución a la web: HTTP, URL y HTML
Yupp PHP Framework
Motor De Bases De Datos Oracle
ORACLE
Cómo elegir un servidor Web
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
Motor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
¿Cómo elegir servidor web?
Framework Catalyst
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
ASP.NET MVC
Lenguaje de programación javascript
Optimización de aplicaciones PHP (server side)
Publicidad

Más de Domingo Suarez Torres (20)

PDF
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
PDF
Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
PDF
Java Dev Day 2019 No kuberneteen por convivir
PDF
Contenedores 101 Digital Ocean CDMX
PPTX
Retos en la arquitectura de Microservicios
PDF
Java Cloud Native Hack Nights GDL
PDF
meetup digital ocean kubernetes
PDF
Peru JUG Micronaut & GraalVM
PDF
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
PDF
Cloud Native Development in the JVM
PDF
Cloud Native Mexico - Introducción a Kubernetes
PDF
Meetup DigitalOcean Cloud Native architecture
PDF
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
PDF
Cloud Native Mexico Meetup enero 2018 Observability
PDF
Cloud Native Mexico Presentacion
PDF
gRPC: Beyond REST
PDF
Devops Landscape
PDF
Orquestación de contenedores con Kubernetes SGNext
PDF
JVM Reactive Programming
PDF
SGNext Elasticsearch
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Java Dev Day 2019 No kuberneteen por convivir
Contenedores 101 Digital Ocean CDMX
Retos en la arquitectura de Microservicios
Java Cloud Native Hack Nights GDL
meetup digital ocean kubernetes
Peru JUG Micronaut & GraalVM
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
Cloud Native Development in the JVM
Cloud Native Mexico - Introducción a Kubernetes
Meetup DigitalOcean Cloud Native architecture
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Presentacion
gRPC: Beyond REST
Devops Landscape
Orquestación de contenedores con Kubernetes SGNext
JVM Reactive Programming
SGNext Elasticsearch

Último (20)

PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Maste clas de estructura metálica y arquitectura
PPT
Que son las redes de computadores y sus partes
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Presentación de Redes de Datos modelo osi
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
clase auditoria informatica 2025.........
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
historia_web de la creacion de un navegador_presentacion.pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Diapositiva proyecto de vida, materia catedra
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Maste clas de estructura metálica y arquitectura
Que son las redes de computadores y sus partes
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Presentación de Redes de Datos modelo osi
Plantilla para Diseño de Narrativas Transmedia.pdf
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Calidad desde el Docente y la mejora continua .pdf
Propuesta BKP servidores con Acronis1.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
clase auditoria informatica 2025.........
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Sesion 1 de microsoft power point - Clase 1
Presentación PASANTIAS AuditorioOO..pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx

SG 09 Patrones de Integración Empresarial Apache Camel (Draft)

  • 1. Enterprise Integration Patterns Apache Camel Domingo Suárez Torres CTO SynergyJ
  • 2. Objetivo Comprender los beneficios de usar Patrones para Integrar aplicaciones usando OpenSource con Apache Camel 2
  • 3. Agenda • Patrones de diseño • Patrones de Integración Empresarial (EIP) • Integración en la plataforma Java – Bajo nivel • Sockets • WebServices • EJB – SessionBeans – Message Driven Beans (JMS) – Alto nivel • J2EE Connector Architecture (JCA) • Java Business Integration (JBI) • Caso de estudio con Apache Camel 3
  • 4. Patrones de Diseño Antecedentes 4
  • 5. Volumen I • En 1979 el arquitecto Christopher Alexander escribe: – “The Timeless Way of Building” • El libro en Google Books – http://bit.ly/qK1nH 5
  • 6. Volumen II • Editado en 1977 • Libro en Google Books – http://bit.ly/14NKKk 6
  • 7. The Timeless Way of Building • En el libro se propone el aprendizaje y uso de una serie de patrones para la construcción de edificios de una mayor calidad. 7
  • 8. The Timeless Way of Building • "Cada patrón describe un problema que ocurre infinidad de veces en nuestro entorno, así como la solución al mismo, de tal modo que podemos utilizar esta solución un millón de veces más adelante sin tener que volver a pensarla otra vez." 8
  • 9. OOPSLA-87 • En 1987, Ward Cunningham y Kent Beck usan las ideas de Alexander y publican un articulo • Using Pattern Languages for OO Programs. • http://bit.ly/o8YkZ 9
  • 10. Principios de los 90’s • Se edita en 1995 • Usa una estructura muy estructurada para explicar los patrones: – Nombre del patrón – Problema – Solución – Consecuencias 10
  • 11. Enterprise Integration Patterns Evolución de los patrones de diseño a contextos más específicos, en este caso a la integración de aplicaciones. 11
  • 12. Necesidad de la integración • Aplicaciones legadas. • Variedad de plataformas y tecnologías. • Carencia de estándares bien definidos. – Cada proveedor define su tecnología. • Aplicaciones de terceros • eGoverment • Socios comerciales 12
  • 13. Aplicaciones de integración • Necesarias para servir de puente entre las aplicaciones • Traduce y adapta tipos de datos • Se encarga del medio de transporte asi como del protocolo • En el mercado existen productos para este tipo de necesidades 13
  • 14. Mercado • Enterprise Service Bus – Progress Software – Oracle – Sun – IBM – Tibco • Mucho dinero $ 14
  • 15. OpenSource • Apache ServiceMix • OpenESB • Mule • Fuse • Apache Camel es la base de varios de estos proyectos 15
  • 16. Volvamos a lo básico • Patrones – Casi todos los problemas de integración ya han sido resueltos – Muchos patrones están construidos en los diversos productos, ya sean propietarios o de código abierto. – Necesario documentarse en el tema. 16
  • 17. Literatura • Publicado en 2004 • Excelente referencia para diseñar y construir aplicaciones de integración. • Recopila 65 patrones para integrar aplicaciones. • Plantea a la mensajería como piedra angular para la integración. 17
  • 18. Enterprise Integration Patterns • Plantea una nomenclatura estándar para modelado y diseño de la solución. 18
  • 19. Apache Camel Me gusta el OpenSource. A veces no tenemos dinero para adquirir licencias. 19
  • 20. Apache Camel • Es un poderoso framework que implementa gran cantidad de los EIP • http://camel.apache.org 20
  • 21. Apache Camel • Bajo la licencia Apache 2.0 • Puedes implementar reglas de ruteo y mediación con: – Un Domain Specific Language (DSL) basado en Java – Con XML (Spring) – Con un DSL en Scala • Utiliza URIs para identificar los endpoints de la aplicación 21
  • 22. Apache Camel Conceptos Fundamentales 22
  • 23. Endpoint • Es un termino común usado en comunicaciones del tipo inter-proceso (inter- process communication) • Dependiendo del contexto, un endpoint puede referirse a una dirección, como el par servidor:puerto, para una comunicación basada en TCP • O puede ser una entidad de software que responde a una dirección, • Ejemplo: – www.servidor.com:80 23
  • 24. Tipos de Endpoint • ServerSocket o ClientSocket • Un WebService • Un Archivo • Servidor de FTP • Un Destination de JMS • Una dirección de correo • Un Plain Old Java Object (POJO) • ¿Se entiende la idea? 24
  • 25. URIs • Uniform Resource Identifier • Sirven para identificar los endpoints • Desacopla el componente que va a ser usado • Es similar a una URL • Ejemplo: – foo:0000-0000-9E59-0000-5E-2 25
  • 26. CamelContext • Es un objeto que representa el sistema de ejecución de Camel • Administra el ciclo de vida de los componentes configurados en Camel 26
  • 27. Componentes • EndpointFactory es un mejor nombre, componente es un nombre confuso • Se necesita un URI para crear el componente • Ejemplos: myCamelContext.getEndpoint("pop3:// john.smith@mailserv.example.com? password=myPassword"); myCamelContext.getEndpoint("ftp://server? user=ss&password=myPassword"); 27
  • 28. Tipos de componentes • Apache Camel soporta múltiples componentes entre ellos: – JMS – FTP – POP3, SMTP – WebServices – Archivos – Protocolo FIX – Hibernate – HL7 (Estandar Médico) – Sockets con Apache Mina 28
  • 29. Caso de estudio Cámara de Compensación del Mercado de Derivados 29
  • 30. Requerimiento • Recibir los hechos de operaciones del mercado mexicano de derivados • Validar la información. • Integrarla a los diversos sistemas de la cámara de compensación – AS/400 con RPG y Cobol – Java EE sobre Solaris con WebLogic y Oracle • Monitorear la actividad del mercado para realizar operaciones preventivas y correctivas 30
  • 31. Detalle aburrido • Recibir tramas de información través de un Socket. • Separar los registros recibidos • Validar numero de secuencia • Bitacorar el registro • Ejecutar lógica de negocio • Generar reporte estadístico de la información • Integrar información al sistema de la empresa 31
  • 32. Solución • Uso de SpringFramework • Camel se integra sin problemas con Spring • Escritura de reglas de ruteo y mediación simples y sencillas • El desarrollo se concentro en escribir POJOS, nada complicado y fácil de probar. • Altamente personalizable y configurable • Sin costo de licencias. 32
  • 33. Demo Manos a la obra¡¡ 33
  • 34. Preguntas y Respuestas domingo.suarez@synergyj.com twitter.com/domix