SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Curso: Programación Web con Tecnología Java
Curso:  	Programación Web con Tecnología JavaCurso:  	Programación Web con Tecnología Java
Curso: Programación Web con Tecnología Javaalvaro alcocer sotil
 
Presentacion remobjects
Presentacion remobjectsPresentacion remobjects
Presentacion remobjectsmamcx
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache AntIker Canarias
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5Pablo Morales
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sqlyanetzis
 
6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Capacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP FrameworkCapacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP FrameworkDeivinson Tejeda
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAbimael Desales López
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo WebEmilio Aviles Avila
 
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 SpiritEstructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 SpiritDeivinson Tejeda
 

Mais procurados (19)

Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Curso: Programación Web con Tecnología Java
Curso:  	Programación Web con Tecnología JavaCurso:  	Programación Web con Tecnología Java
Curso: Programación Web con Tecnología Java
 
Presentacion remobjects
Presentacion remobjectsPresentacion remobjects
Presentacion remobjects
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5
 
Practica09
Practica09Practica09
Practica09
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sql
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML6/9 Curso JEE5, Soa, Web Services, ESB y XML
6/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Manualcake
ManualcakeManualcake
Manualcake
 
Capacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP FrameworkCapacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP Framework
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 SpiritEstructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
 
Php programmers
Php programmersPhp programmers
Php programmers
 
Kumbia php
Kumbia phpKumbia php
Kumbia php
 

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

Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónLoja Valle de Tecnología
 
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Luis Bosque
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apisCloudAppi
 
Introdución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTMLIntrodución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTMLJoaquín Salvachúa
 
Yupp PHP Framework
Yupp PHP FrameworkYupp PHP Framework
Yupp PHP FrameworkPablo Pazos
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayTips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayJuan Fabian
 
Lenguaje de programación javascript
Lenguaje de programación javascriptLenguaje de programación javascript
Lenguaje de programación javascriptCesia Garmendez
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Oriol Jiménez
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite ServerLuis Lesende
 

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

Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-Distribución
 
Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Introdución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTMLIntrodución a la web: HTTP, URL y HTML
Introdución a la web: HTTP, URL y HTML
 
Yupp PHP Framework
Yupp PHP FrameworkYupp PHP Framework
Yupp PHP Framework
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
ORACLE
ORACLEORACLE
ORACLE
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayTips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Lenguaje de programación javascript
Lenguaje de programación javascriptLenguaje de programación javascript
Lenguaje de programación javascript
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
 

Mais de Domingo Suarez Torres

Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesCloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesDomingo Suarez Torres
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivirDomingo Suarez Torres
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosDomingo Suarez Torres
 
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDomingo Suarez Torres
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesDomingo Suarez Torres
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureDomingo Suarez Torres
 
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyCloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyDomingo Suarez Torres
 
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityCloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityDomingo Suarez Torres
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextDomingo Suarez Torres
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosDomingo Suarez Torres
 

Mais de Domingo Suarez Torres (20)

Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesCloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 
Contenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMXContenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMX
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de Microservicios
 
Java Cloud Native Hack Nights GDL
Java Cloud Native Hack Nights GDLJava Cloud Native Hack Nights GDL
Java Cloud Native Hack Nights GDL
 
meetup digital ocean kubernetes
meetup digital ocean kubernetesmeetup digital ocean kubernetes
meetup digital ocean kubernetes
 
Peru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVMPeru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVM
 
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
 
Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architecture
 
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyCloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
 
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityCloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 Observability
 
Cloud Native Mexico Presentacion
Cloud Native Mexico PresentacionCloud Native Mexico Presentacion
Cloud Native Mexico Presentacion
 
gRPC: Beyond REST
gRPC: Beyond RESTgRPC: Beyond REST
gRPC: Beyond REST
 
Devops Landscape
Devops LandscapeDevops Landscape
Devops Landscape
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
 
JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
SGNext Elasticsearch
SGNext ElasticsearchSGNext Elasticsearch
SGNext Elasticsearch
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

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