sg 09 patrones de integración empresarial apache camel (draft)

34
Domingo Suárez Torres CTO SynergyJ Enterprise Integration Patterns Apache Camel

Upload: domingo-suarez-torres

Post on 14-Jun-2015

1.760 views

Category:

Technology


9 download

DESCRIPTION

El desarrollo de aplicaciones en diversas plataformas y lenguajes en una empresa, es un caso de uso muy común que se presenta a lo largo del tiempo. Así mismo, la necesidad de poder integrar los datos de estas diversas aplicaciones, muchas veces incompatibles entre si, lleva a la necesidad de desarrollar aplicaciones que se encarguen del intercambio de estos datos para lograr un consolidado de información que aporte valor a la empresa.Al momento de diseñar este tipo de aplicaciones, es común el observar patrones una y otra vez. Dichos patrones han sido recopilados y documentados por Gregor Hohpe y Bobby Woolf en su libro "Enterprise Integration Patterns", en el cual ofrecen una visión completa y muy bien explicada de estos patrones, así como de una nomenclatura que se ha vuelto estándar para representar estos patrones.Apache Camel es la implementación de la gran mayoría de los patrones propuestos por Gregor y Bobby para la plataforma Java y de manera OpenSource bajo licencia Apache 2.0. Apache Camel es una alternativa a diversas herramientas comerciales para realizar aplicaciones empresariales de integración de aplicaciones.En la conferencia se mostraran los patrones mas comunes, su notación, diseño e implementación usando Apache Camel, de igual manera se mostrara la infraestructura necesaria para ejecutar Apache Camel, los mecanismos de monitoreo de aplicaciones desarrolladas con Camel y como se puede integrar con productos de integración como Brokers de Mensajería (JMS), Enterprise Service Bus (ESB) y servidores de aplicaciones clásicos.

TRANSCRIPT

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

Domingo Suárez TorresCTO

SynergyJ

Enterprise Integration PatternsApache Camel

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

2

Objetivo

Comprender los beneficios de usar Patrones para Integrar

aplicaciones usando OpenSource con Apache Camel

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

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

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

4

Patrones de Diseño

Antecedentes

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

5

Volumen I

• En 1979 el arquitecto Christopher Alexander escribe:– “The Timeless Way of Building”

• El libro en Google Books– http://bit.ly/qK1nH

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

Volumen II

• Editado en 1977• Libro en Google Books

– http://bit.ly/14NKKk

6

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

Mercado

• Enterprise Service Bus– Progress Software– Oracle– Sun– IBM– Tibco

• Mucho dinero $

14

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

OpenSource

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

estos proyectos

15

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

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

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

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

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

Enterprise Integration Patterns• Plantea una nomenclatura estándar para

modelado y diseño de la solución.

18

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

19

Apache Camel

Me gusta el OpenSource.A veces no tenemos dinero para

adquirir licencias.

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

Apache Camel

• Es un poderoso framework que implementa gran cantidad de los EIP

• http://camel.apache.org

20

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

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

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

22

Apache Camel

Conceptos Fundamentales

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

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

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

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

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

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

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

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

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

Componentes

• EndpointFactory es un mejor nombre, componente es un nombre confuso

• Se necesita un URI para crear el componente

• Ejemplos:

27

myCamelContext.getEndpoint("pop3://[email protected]?password=myPassword");

myCamelContext.getEndpoint("ftp://server?user=ss&password=myPassword");

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

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

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

29

Caso de estudio

Cámara de Compensación del Mercado de Derivados

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

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

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

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

empresa31

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

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

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

33

Demo

Manos a la obra¡¡