12/05/2013 Departamento de Lenguajes y Sistemas Informáticos BLOQUE II: Integración de Sistemas Software Patrones de Integración Tema 9 Arquitectura e Integración de Sistemas Software Curso 2012/2013 Índice Introducción Patrones de integración Bibliografía 1 12/05/2013 Índice Introducción Patrones de integración Bibliografía Introducción Ejemplo Una empresa quiere hacer que varias de sus herramientas trabajen juntas ofreciendo una nueva funcionalidad. Han decidido usar mensajería para llevar a cabo la integración. Problemas: ¿Cómo diseñar una solución adecuada? ¿Cómo describir la solución de integración? 2 12/05/2013 Introducción ¡Una idea! Usar un conjunto de soluciones predefinidas para problemas recurrentes (patrones). Usar un vocabulario consistente y una notación visual para describir soluciones de integración a gran escala e independientes de la tecnología usada. Introducción Un patrón es una solución general para un problema que aparece con frecuencia en un dominio determinado. Un patrón no es una solución completa sino un una guía/esqueleto que debe ser adaptado para cada problema específico. Idea intuitiva: “Cuando te encuentres este problema, aplica esta solución”. Problema Solución 3 12/05/2013 Introducción Introducción 4 12/05/2013 Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía Message channel ¿Cómo puede una aplicación comunicarse con otra usando mensajería? Conectar la aplicación usando un canal de mensajes (message channel), donde una aplicación escribe información en un extremo del canal y la otra lee la información en el otro extremo. 5 12/05/2013 Message (I) ¿Cómo pueden dos aplicaciones conectadas por un canal de mensajes intercambiar información? Empaquetar la información en un mensaje (message), un conjunto de datos que el sistema de mensajería puede transmitir a través de un canal de mensajes. Message (II) Un mensaje consta de dos partes básicas: • Cabecera. Información usada por el sistema de mensajería para describir los datos que se están transmitiendo (origen, destino, etc.) • Cuerpo. Contenido del mensaje. Generalmente es ignorado por el sistema de mensajería y es enviado tal cual. Este sistema es similar al usado en las redes de comunicaciones. 6 12/05/2013 Pipes and filters ¿Cómo podemos ejecutar tareas de procesamiento complejas sobre un mensaje manteniendo la independencia y la flexibilidad? Usar el estilo arquitectónico tuberías y filtros (pipes and filters) para dividir tareas de procesamiento largas en una secuencia de pasos pequeños e independientes (filtros) que son conectados por canales de mensajes (tuberías). Message router ¿Cómo podemos desacoplar pasos de procesamiento individuales de manera que los mensajes puedan pasar por distintos filtros dependiendo de una serie de condiciones? Insertar un tipo especial de filtro, enrutador de mensajes (message router), que consume un mensaje de un canal de mensajes y lo redirige a diferentes canales en función de una serie de condiciones. 7 12/05/2013 Message translator ¿Cómo pueden sistemas con formatos de datos diferentes comunicarse entre sí usando mensajería? Usar un tipo especial de filtro, un traductor de mensajes (message translator), entre otros filtros o aplicaciones para traducir de un formato a otro. Message endpoint ¿Cómo puede una aplicación conectarse un canal de mensajes para enviar y recibir mensajes? Conectar la aplicación a un canal de mensajes usando un extremo de mensajería (message endpoint), un cliente del sistema de mensajería que la aplicación puede usar para enviar y recibir mensajes. 8 12/05/2013 Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía Point-to-point channel ¿Cómo puede la aplicación que envia el mensaje estar segura de que sólo un receptor recibirá el mensaje? Enviar el mensaje usando un canal punto a punto (point-to-point channel), para asegurar que sólo un receptor recibirá el mensaje. 9 12/05/2013 Publish-suscribe channel ¿Cómo puede un emisor enviar un evento a todos los receptores interesados? Enviar el evento a través de un canal publicar-suscribir (publish-subscribe channel), que entrega una copia del evento a cada receptor interesado en el mismo. Channel adapter ¿Cómo podemos conectar una aplicación cerrada a un sistema de mensajería de manera que pueda enviar y recibir mensajes? Usar un adaptador (channel adapter) que puede acceder a la API o los datos de la aplicación y publicar mensajes con esos datos en el canal. Así mismo, el adaptador permitirá recibir mensajes e invocar funcionalidad de la aplicación. 10 12/05/2013 Message bus ¿Qué arquitectura permite a aplicaciones trabajar juntas pero de una forma desacoplada de manera que las aplicaciones puedan ser añadidas o eliminadas sin afectar a las otras? Estructurar las aplicaciones haciendo uso de un bus de mensajes (Message Bus) que les permita trabajar juntas usando mensajería. Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía 11 12/05/2013 Command message ¿Cómo puede usarse la mensajería para invocar a un procedimiento de otra aplicación? Usar un mensaje comando (command message) para invocar a un procedimiento de otra aplicación. Document message ¿Cómo puede la mensajería utilizarse para transferir datos entre aplicaciones? Usar un mensaje documento (document message) para transferir datos entre aplicaciones. 12 12/05/2013 Event message ¿Cómo puede usarse la mensajería para transmitir eventos entre aplicaciones? Usar un mensaje evento (event message) para la notificación asíncrona de eventos entre aplicaciones. Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía 13 12/05/2013 Message filter ¿Cómo puede una aplicación evitar recibir determinados mensajes? Usar un filtro de mensajes (message filter), para eliminar mensajes no deseados de un canal de acuerdo a unos criterios dados. Splitter ¿Cómo podemos procesar un mensaje que contiene múltiples elementos, cada uno de los cuales tiene que ser procesado de una forma diferente? Usar un divisor (splitter) para dividir el mensaje compuesto en un conjunto de mensajes individuales donde cada mensaje contendrá datos que deben ser procesados de forma diferente. 14 12/05/2013 Aggregator ¿Cómo podemos combinar mensajes individuales de manera que puedan ser procesados como un todo? Usar un filtro con estado, un agregador (aggregator), para recibir y almacenar mensajes individuales que posteriormente son fusionados en uno sólo. Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía 15 12/05/2013 Content enricher ¿Cómo podemos comunicar una aplicación con otra si el mensaje de origen no tiene toda la información requerida por la aplicación destino? Usar un tipo específico de transformador, un enriquecedor de contenido (content enricher), para acceder a una fuente de datos externos y añadir información adicional al mensaje. Content filter ¿Cómo podemos simplificar el trabajo con un mensaje grande cuando sólo nos interesa parte del contenido? Usar un filtro de contenido (Content Filter) para eliminar los datos no deseados del mensaje. 16 12/05/2013 Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía Messaging gateway ¿Cómo podemos encapsular el acceso al sistema de mensajería desde el resto de la aplicación? Usar un punto de acceso (messaging gateway), un elemento que envuelve a los métodos del sistema de mensajería y expone métodos específicos del dominio a la aplicación. 17 12/05/2013 Message dispatcher ¿Cómo pueden múltiples consumidores en un único canal coordinarse para procesar los mensajes? Crear un distribuidor de mensajes (message dispatcher) que consuma los mensajes del canal y los distribuya entre los responsables de procesarlos. Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía 18 12/05/2013 Control Bus ¿Cómo podemos administrar eficientemente un sistema de mensajería distribuido? Usar un bus de control (control bus) para gestionar una solución de integración. El bus usa los mismos mecanismos que el sistema de mensajería pero usa sus propios canales y mensajes para transmitir datos relevantes para la gestión y monitorización del sistema. Índice Introducción Patrones de integración Patrones básicos Canales de mensajes Construcción de mensajes Enrutamiento de mensajes Manipulación de mensajes Extremos de mensajería Gestión del sistema Resumen Bibliografía 19 12/05/2013 Resumen Categoría Patrones Patrones básicos Message channel Message Pipes and filters Message router Message translator Message endpoint Canales de mensajes Point-to-Point channel Publish-suscribe channel Channel adapter Message bus Construcción de mensajes Command message Document message Event message Enrutamiento de mensajes Message filter Splitter Aggregator Manipulación de mensajes Content enricher Content filter Extremos de mensajería Messaging gateway Messaging dispatcher Gestión del sistema Control bus Índice Introducción Patrones de integración Bibliografía 20 12/05/2013 Bibliografía Gregor Hohpe, Bobby Woolf. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions http://www.eaipatterns.com/ Disclaimer and Terms of Use All material displayed on this presentation is for teaching and personal use only. Many of the images that have been used in the presentation are Royalty Free images taken from http://www.everystockphoto.com/. Other images have been sourced directly from the Public domain, from where in most cases it is unclear whether copyright has been explicitly claimed. Our intention is not to infringe any artist’s copyright, whether written or visual. We do not claim ownership of any image that has been freely obtained from the public domain. In the event that we have freely obtained an image or quotation that has been placed in the public domain and in doing so have inadvertently used a copyrighted image without the copyright holder’s express permission we ask that the copyright holder writes to us directly, upon which we will contact the copyright holder to request full written permission to use the quote or images. 21