SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
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 publica en 1995
• Usa una estructura muy
  simple 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 $ y muchas otras opciones...



                                          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
  asíncrona como piedra
  angular para la integración.

                                 17
¿Porque mensajería?

• Comunicación de aplicaciones a
  aplicaciones
• Asíncrono
• La información se intercambia como
  mensajes sobre canales
• Confiable (durable). Se permiten
  operaciones sin conexión
• Mejora el uso de hilos
• Transaccional
                                       18
Enterprise Integration Patterns
• Plantea una nomenclatura estándar para
  modelado y diseño de la solución.




                                           19
Diagrama sencillo




                    20
Mensajes




           21
Filtros y pipes




                  22
Ruteo de mensajes




                    23
Traducción de mensajes




                         24
Algo más elaborado




                     25
Plantillas

• OmniGraffle
  – http://bit.ly/11Bq7X
• OpenOffice
  – http://bit.ly/14zt3t
• Microsoft Visio
  – http://bit.ly/3FGtN4




                           26
EIP

• Pros
  – Escalamiento
  – Desacoplamiento
  – Pruebas de unidad (Unit Testing)
• Contras
  – Latencia VS rendimiento (throughput)
  – Pruebas de integración (Integration Testing)
  – Desacoplamiento no es siempre lo mas
    adecuado

                                                   27
Apache Camel



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




                                     28
Apache Camel

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




                                        29
Apache Camel

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


                                                30
Apache Camel



      Conceptos Fundamentales




                                31
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
                                              32
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?
                                      33
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



                                          34
CamelContext

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




                                              35
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");
                                                  36
Tipos de componentes
• Apache Camel soporta múltiples
  componentes entre ellos (+70):
  –   JMS
  –   FTP
  –   POP3, SMTP
  –   WebServices
  –   Archivos
  –   Protocolo FIX
  –   Hibernate
  –   HL7 (Estandar Médico)
  –   Sockets con Apache Mina
  –   Personalizables
                                   37
Usando Camel




               38
Regla simple de ruteo




from(“aUri”).to(“anotherUri”);

                                 39
Integración de componentes



Archivo   Message   Message      Message    JMS
Channel             Translator             Channel
                      POJO




                                               40
Ruteador Basado en Contenido




                               41
Caso de estudio



     Cámara de Compensación del
        Mercado de Derivados




                                  42
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
                                                  43
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
                                           44
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.

                                          45
Contexto


                Message                                                     Message   JMS-ActiveMQ
SocketServer              Message                      Splitter                                       Event-Driven
  Channel                 Translator                                                    Channel        Consumer




JMS-Weblogic                           Transactional                  Content Based      Message
  Channel                                                                                             Resequencer
                                          Client                         Router          Translator




 Event-Driven
  Consumer                                              Control Bus




                                                                                                               46
Conclusiones


        EIP y Apache Camel




                             47
Conclusiones

• La implementación de los EIP fue una
  buena decisión
• Permitió reutilizar ideas y soluciones
  probadas
• La arquitectura quedo muy bien definida,
  clara y de fácil comprensión
• Incluso el usuario pudo entender y opinar
  sobre nuestros modelos de diseño
  (Nomenclatura estándar de EIP)

                                              48
Apache Camel

• No tuvimos que implementar casi nada de
  infraestructura
• Usamos la infraestructura disponible
• No pagamos licencias
• Usamos las facilidades del servidor de
  aplicaciones y agregamos el excelente
  funcionamiento de ActiveMQ



                                            49
Apache Camel

• La implementación de la logica de negocio
  fue en Java Puro
• Facilito implementar pruebas de unidad
  muy simple
• No fue necesario utilizar herramientas
  especiales, solo el IDE (Eclipse)
• Alto performance
• Aplicación integrada a todos los procesos
  de negocio de la cámara de compensación.
                                          50
Contexto


                Message                                                     Message   JMS-ActiveMQ
SocketServer              Message                      Splitter                                       Event-Driven
  Channel                 Translator                                                    Channel        Consumer




JMS-Weblogic                           Transactional                  Content Based      Message
  Channel                                                                                             Resequencer
                                          Client                         Router          Translator




 Event-Driven
  Consumer                                              Control Bus




                                                                                                               51
Preguntas y Respuestas

                      domingo.suarez@synergyj.com
                                      twitter: @domix
  Presentación: http://slideshare.net/domingo.suarez
Créditos de las fotos

•   http://www.flickr.com/photos/elvispayne/2074381213/
•   http://www.flickr.com/photos/samiksha/429302387/
•   http://www.flickr.com/photos/vetrone/3046845038/
•   http://www.flickr.com/photos/elpei/812950306/
•   http://www.flickr.com/photos/stevephillips/238560751/
•   http://www.flickr.com/photos/pensiero/628674486/
•




                                                        53

Contenu connexe

Tendances

백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelKnoldus Inc.
 
ASP.NET Developer Roadmap 2021
ASP.NET Developer Roadmap 2021ASP.NET Developer Roadmap 2021
ASP.NET Developer Roadmap 2021Ronak Sankhala
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooksMaulik Shah
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerSmartBear
 
API Management Solution Powerpoint Presentation Slides
API Management Solution Powerpoint Presentation SlidesAPI Management Solution Powerpoint Presentation Slides
API Management Solution Powerpoint Presentation SlidesSlideTeam
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start GuideAndrii Gakhov
 
Introduction to Swagger
Introduction to SwaggerIntroduction to Swagger
Introduction to SwaggerKnoldus Inc.
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache CamelKapil Kumar
 
Frequently asked MuleSoft Interview Questions and Answers from Techlightning
Frequently asked MuleSoft Interview Questions and Answers from TechlightningFrequently asked MuleSoft Interview Questions and Answers from Techlightning
Frequently asked MuleSoft Interview Questions and Answers from TechlightningArul ChristhuRaj Alphonse
 
Provisioning Datadog with Terraform
Provisioning Datadog with TerraformProvisioning Datadog with Terraform
Provisioning Datadog with TerraformMatt Spurlin
 
HSBC and AWS Day - Microservices and Serverless
HSBC and AWS Day - Microservices and ServerlessHSBC and AWS Day - Microservices and Serverless
HSBC and AWS Day - Microservices and ServerlessAmazon Web Services
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooksSamundra khatri
 

Tendances (20)

백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
ASP.NET Developer Roadmap 2021
ASP.NET Developer Roadmap 2021ASP.NET Developer Roadmap 2021
ASP.NET Developer Roadmap 2021
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
Salesforce static code analysis
Salesforce static code analysisSalesforce static code analysis
Salesforce static code analysis
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of Swagger
 
API Management Solution Powerpoint Presentation Slides
API Management Solution Powerpoint Presentation SlidesAPI Management Solution Powerpoint Presentation Slides
API Management Solution Powerpoint Presentation Slides
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start Guide
 
Introduction to Swagger
Introduction to SwaggerIntroduction to Swagger
Introduction to Swagger
 
Azure Service Fabric
Azure Service FabricAzure Service Fabric
Azure Service Fabric
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache Camel
 
Frequently asked MuleSoft Interview Questions and Answers from Techlightning
Frequently asked MuleSoft Interview Questions and Answers from TechlightningFrequently asked MuleSoft Interview Questions and Answers from Techlightning
Frequently asked MuleSoft Interview Questions and Answers from Techlightning
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
Provisioning Datadog with Terraform
Provisioning Datadog with TerraformProvisioning Datadog with Terraform
Provisioning Datadog with Terraform
 
HSBC and AWS Day - Microservices and Serverless
HSBC and AWS Day - Microservices and ServerlessHSBC and AWS Day - Microservices and Serverless
HSBC and AWS Day - Microservices and Serverless
 
Vue.js
Vue.jsVue.js
Vue.js
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
Asp.net controls
Asp.net controlsAsp.net controls
Asp.net controls
 

Similaire à Integración empresarial con Apache Camel

SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)Domingo Suarez Torres
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesBitnami
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TIManolo Crespo
 
Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NETYamil Lambert
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxEduardo Castro
 
MySQL de 1995 a 5.5
MySQL de 1995 a 5.5MySQL de 1995 a 5.5
MySQL de 1995 a 5.5juliomacr
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSAmazon Web Services LATAM
 
Programación web
Programación webProgramación web
Programación weberic291285
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webRoberto Sanz Ciriano
 

Similaire à Integración empresarial con Apache Camel (20)

SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de Aplicaciones
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TI
 
Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NET
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
 
SOA Open Source
SOA Open SourceSOA Open Source
SOA Open Source
 
MySQL de 1995 a 5.5
MySQL de 1995 a 5.5MySQL de 1995 a 5.5
MySQL de 1995 a 5.5
 
SGCE 2014 micro services
SGCE 2014 micro servicesSGCE 2014 micro services
SGCE 2014 micro services
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
AWSome Day - Conferencia Online Junio 2020
AWSome Day - Conferencia Online Junio 2020 AWSome Day - Conferencia Online Junio 2020
AWSome Day - Conferencia Online Junio 2020
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
 
Programación web
Programación webProgramación web
Programación web
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 

Plus 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
 

Plus 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
 

Dernier

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
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
 
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
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
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
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
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
 
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
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
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
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
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
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
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
 
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
 
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
 

Dernier (20)

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
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
 
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
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
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
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
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
 
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
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
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
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
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
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 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
 
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.
 
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
 

Integración empresarial con Apache Camel

  • 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 publica en 1995 • Usa una estructura muy simple 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 $ y muchas otras opciones... 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 asíncrona como piedra angular para la integración. 17
  • 18. ¿Porque mensajería? • Comunicación de aplicaciones a aplicaciones • Asíncrono • La información se intercambia como mensajes sobre canales • Confiable (durable). Se permiten operaciones sin conexión • Mejora el uso de hilos • Transaccional 18
  • 19. Enterprise Integration Patterns • Plantea una nomenclatura estándar para modelado y diseño de la solución. 19
  • 21. Mensajes 21
  • 26. Plantillas • OmniGraffle – http://bit.ly/11Bq7X • OpenOffice – http://bit.ly/14zt3t • Microsoft Visio – http://bit.ly/3FGtN4 26
  • 27. EIP • Pros – Escalamiento – Desacoplamiento – Pruebas de unidad (Unit Testing) • Contras – Latencia VS rendimiento (throughput) – Pruebas de integración (Integration Testing) – Desacoplamiento no es siempre lo mas adecuado 27
  • 28. Apache Camel Me gusta el OpenSource. A veces no tenemos dinero para adquirir licencias. 28
  • 29. Apache Camel • Es un poderoso framework que implementa gran cantidad de los EIP • http://camel.apache.org 29
  • 30. Apache Camel • Bajo la licencia Apache 2.0 • Puedes implementar reglas de ruteo y mediación con: – Un Domain Specific Language (DSL) en Java – Con XML (Spring) – Con un DSL en Scala • Utiliza URIs para identificar los endpoints de la aplicación 30
  • 31. Apache Camel Conceptos Fundamentales 31
  • 32. 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 32
  • 33. 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? 33
  • 34. 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 34
  • 35. CamelContext • Es un objeto que representa el sistema de ejecución de Camel • Administra el ciclo de vida de los componentes configurados en Camel 35
  • 36. 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"); 36
  • 37. Tipos de componentes • Apache Camel soporta múltiples componentes entre ellos (+70): – JMS – FTP – POP3, SMTP – WebServices – Archivos – Protocolo FIX – Hibernate – HL7 (Estandar Médico) – Sockets con Apache Mina – Personalizables 37
  • 39. Regla simple de ruteo from(“aUri”).to(“anotherUri”); 39
  • 40. Integración de componentes Archivo Message Message Message JMS Channel Translator Channel POJO 40
  • 41. Ruteador Basado en Contenido 41
  • 42. Caso de estudio Cámara de Compensación del Mercado de Derivados 42
  • 43. 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 43
  • 44. 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 44
  • 45. 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. 45
  • 46. Contexto Message Message JMS-ActiveMQ SocketServer Message Splitter Event-Driven Channel Translator Channel Consumer JMS-Weblogic Transactional Content Based Message Channel Resequencer Client Router Translator Event-Driven Consumer Control Bus 46
  • 47. Conclusiones EIP y Apache Camel 47
  • 48. Conclusiones • La implementación de los EIP fue una buena decisión • Permitió reutilizar ideas y soluciones probadas • La arquitectura quedo muy bien definida, clara y de fácil comprensión • Incluso el usuario pudo entender y opinar sobre nuestros modelos de diseño (Nomenclatura estándar de EIP) 48
  • 49. Apache Camel • No tuvimos que implementar casi nada de infraestructura • Usamos la infraestructura disponible • No pagamos licencias • Usamos las facilidades del servidor de aplicaciones y agregamos el excelente funcionamiento de ActiveMQ 49
  • 50. Apache Camel • La implementación de la logica de negocio fue en Java Puro • Facilito implementar pruebas de unidad muy simple • No fue necesario utilizar herramientas especiales, solo el IDE (Eclipse) • Alto performance • Aplicación integrada a todos los procesos de negocio de la cámara de compensación. 50
  • 51. Contexto Message Message JMS-ActiveMQ SocketServer Message Splitter Event-Driven Channel Translator Channel Consumer JMS-Weblogic Transactional Content Based Message Channel Resequencer Client Router Translator Event-Driven Consumer Control Bus 51
  • 52. Preguntas y Respuestas domingo.suarez@synergyj.com twitter: @domix Presentación: http://slideshare.net/domingo.suarez
  • 53. Créditos de las fotos • http://www.flickr.com/photos/elvispayne/2074381213/ • http://www.flickr.com/photos/samiksha/429302387/ • http://www.flickr.com/photos/vetrone/3046845038/ • http://www.flickr.com/photos/elpei/812950306/ • http://www.flickr.com/photos/stevephillips/238560751/ • http://www.flickr.com/photos/pensiero/628674486/ • 53