Composición de servicios Composición estática ECSDI LSI-FIB-UPC c b e a Curso 2015/2016 ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 1 / 38 Índice 1 Introducción 2 Descripción de Servicios 3 Estrategias de composición 4 Implementación de composiciones 5 Problemas ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 2 / 38 Introducción 1 Introducción 2 Descripción de Servicios 3 Estrategias de composición 4 Implementación de composiciones 5 Problemas ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 3 / 38 Introducción Servicios El número de servicios web disponibles en internet crece cada dı́a www.programableweb.com tiene más de 8000 apis de SW El desarrollo de aplicaciones en entornos abiertos puede aprovechar servicios comunes Se pueden desarrollar nuevas aplicaciones componendo servicios El esfuerzo de desarrollo de las aplicaciones se ve reducido La filosofı́a de análisis y diseño de aplicaciones debe adaptarse ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 4 / 38 Introducción Programación con servicios El sentido de la programación basada en servicios (o agentes) es poder usarlos como componentes Cada servicio individual realiza una (o varias) tareas concretas La unión de servicios siguiendo diferentes flujos permite implementar diferentes soluciones La unión de servicios (o agentes) para obtener una solución se denomina composición ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 5 / 38 Introducción Programación con servicios ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 6 / 38 Descripción de Servicios 1 Introducción 2 Descripción de Servicios 3 Estrategias de composición 4 Implementación de composiciones 5 Problemas ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 7 / 38 Descripción de Servicios Descripción de servicios Han aparecido y se están desarrollando diferentes tecnologı́as para definir servicios que permitan hacer su composición Las principales alternativas se solapan pero no son iguales Están en diferentes procesos de estandarización Están apoyadas por diferentes compañı́as Están dirigidas a diferentes nichos de aplicación ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 8 / 38 Descripción de Servicios Service Component Architecture (SCA) La unidad es el componente El servicio o servicios que se desarrollan son accesibles mediante una interfaz El componente puede referenciar a otros componentes El componente tiene elementos configurables que modifican su comportamiento Un componente puede estar formado a su vez por otros componentes El proceso especifico a realizar dicta como se han de conectar ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 9 / 38 Descripción de Servicios Service Component Architecture (SCA) ECSDI (LSI-FIB-UPC cbea) Componente Composición de servicios Referencias Servicios Propiedades Configurables Curso 2015/2016 10 / 38 Descripción de Servicios Service Component Architecture Desacopla la composición de los detalles de invocación Es agnóstico al lenguaje/tecnologı́a (C++, java, PHP, XML, BPEL) Puede utilizar diferentes mecanismos de comunicación Puede integrar elementos basados en otras tecnologı́as (RMI, RPC, CORBA, ...) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 11 / 38 Descripción de Servicios Service Component Architecture Ventajas Poco dependiente de la tecnologı́a Enfocado a su portabilidad IBM, Oracle, SAP, Red Hat Varias implementaciones Open Source Estándar OASIS (open SCA) Desventajas No considera la eficiencia de las aplicaciones No considera la interoperabilidad ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 12 / 38 Descripción de Servicios SOAML Service Oriented Architecture Modelling Language (SOAML) es un perfil UML y un metamodelo para la definición de arquitecturas orientadas a servicios Extiende UML para poder definir todos los elementos que necesita una arquitectura orientada a servicios ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 13 / 38 Descripción de Servicios SOAML Como identificar servicios (qué proveen, qué dependencias tienen) Como especificar servicios (capacidades funcionales, protocolos, intercambio de información) Definición de proveedores y consumidores (conexiones, uso de capacidades) Polı́ticas de uso y provisión de servicios Esquemas de clasificación de servicios/organización/restricciones Requerimientos de los servicios y su uso Enlace con otros metamodelos UML ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 14 / 38 Descripción de Servicios SOAML El elemento principal es el participante Los participantes pueden ser proveedores o consumidores Los servicios se definen a través de puertos (puntos de conexión) Los puertos definen puntos de provisión y consumo de servicios El acceso a los servicios se define a partir de: Una interfaz UML (unidireccional) Una interfaz de servicio (bidireccional) Un contrato de servicio (bidireccional) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 15 / 38 Descripción de Servicios SOAML Ventajas Abarca todos los elementos de diseño/especificación Adaptable a diferentes tecnologı́as Se puede traducir a SCA Desventajas Fases iniciales de implantación (primera versión 2012) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 16 / 38 Estrategias de composición 1 Introducción 2 Descripción de Servicios 3 Estrategias de composición 4 Implementación de composiciones 5 Problemas ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 17 / 38 Estrategias de composición Estrategias de composición Estas tecnologı́as permiten definir cómo son los componentes y cómo se organizarán Permiten definir el proceso de negocio especificando: El orden potencial de ejecución de la composición Los datos compartidos por los servicios Qué servicios estarán involucrados y cómo (interacciones/relación) Cómo se tratarán las excepciones (quién/cómo) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 18 / 38 Estrategias de composición Estrategias de composición El último paso del proceso es establecer como la composición se implementará al ejecutarla Existen diferentes posibilidades: Para el flujo de ejecución: Prefijado Generado automáticamente a partir de la tarea a resolver Para los servicios involucrados Servicios prefijados Servicios provistos por un servicio de directorio (coincidencia sintáctica/semántica) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 19 / 38 Estrategias de composición Estrategias de composición - Orquestación Supone que un ente organizador ejecutará la composición (motor de orquestación) Define el flujo desde la perspectiva de un único integrante (orquestador) Una orquestación define: La lógica de ejecución El orden de las interacciones Cómo los componentes interactuarán a nivel de mensaje ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 20 / 38 Estrategias de composición Estrategias de composición - Orquestación Motor de Orquestación Orquestación WS1 WS3 WS2 WS4 ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 21 / 38 Estrategias de composición Estrategias de composición - Coreografı́a El control está distribuido entre los participantes Define el flujo desde la perspectiva de todas las partes Cada participante conoce el comportamiento de los otros (con los que colabora) Hay una visión común de los elementos que definen el estado La coreografı́a describe la secuencia de mensajes que intercambian múltiples participantes Cada participante describe el rol que tiene en la interacción ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 22 / 38 Estrategias de composición Estrategias de composición - Coreografı́a Coreografía ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 23 / 38 Implementación de composiciones 1 Introducción 2 Descripción de Servicios 3 Estrategias de composición 4 Implementación de composiciones 5 Problemas ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 24 / 38 Implementación de composiciones Estrategias de composición - Implementación La implementación de la composición puede ser programática (hardcoded) Es mas ventajoso utilizar lenguajes de composición: Independencia del lenguaje de los servicios Adaptación al cambio en el flujo de ejecución del servicio compuesto Lenguajes utilizados: WS-BPEL (Web Sevices Process Execution Language) (OASIS) WS-CDL (Web Sevices Choreography Description Language) (W3C) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 25 / 38 Implementación de composiciones Lenguajes de composición - WS-BPEL Se basa en la descripción de los servicios mediante WSDL (Web Services Description Language) Permite definir: Procesos ejecutables: Especificación de los detalles del flujo de ejecución Procesos abstractos: Descripción de procesos generales que permiten dejar elementos por especificar (a instanciar) El lenguaje para los procesos ejecutables incluye todos los elementos de un lenguaje de programación para procesos (invocación, recepción, envı́o de mensajes, excepciones, secuencias, flujos paralelos, bucles, alternativas, ...) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 26 / 38 Implementación de composiciones Lenguajes de composición - WS-BPEL Definición del acceso al servicio desde el exterior con WSDL Definición de puertos, operaciones, mensajes, ... El servicio se obtiene como la ejecución de un proceso definido en WS-BPEL Este proceso define cómo y cuándo se ejecutarán los servicios (envio de mensajes), como se guardará el estado, excepciones, fallos, ... La forma de invocación a los servicios viene de su descripción (WSDL) El proceso es ejecutado por el motor de orquestación ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 27 / 38 Implementación de composiciones WS-BPEL - Elementos <process name="ProcessName"> <!-- Definition of roles of process participants --> <partnerLinks> ... </partnerLinks> <!-- Data and state variables used within the process --> <variables> ... </variables> <!-- Correlation comment --> <correlationSets> ... </correlationSets> <!-- Exception management --> <faultHandlers> ... </faultHandlers> <!-- Message and timeout event handler --> <eventHandlers> ... </eventHandlers> <!-- Processing steps --> <sequence> </sequenece> activities* ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 28 / 38 Implementación de composiciones WS-BPEL - Ejemplo - Servicio de reserva de viajes 1 2 3 4 5 6 7 8 ECSDI Una petición inicia el proceso Invocación al servicio de reserva de mensaje) Guardar respuesta vuelo Invocación al servicio de reserva de mensaje) Guardar respuesta alojamiento Invocación al servicio de reserva de mensaje) Guardar respuesta coche Generar y enviar mensaje respuesta (LSI-FIB-UPC cbea) vuelos (envio/recepción alojamiento (envio/recepción coche (envio/recepción a la petición Composición de servicios Curso 2015/2016 29 / 38 Implementación de composiciones WS-BPEL - Ejemplo - Servicio de reserva de viajes BPEL (Viaje) Cliente Recepción Puerto Respuesta ECSDI (LSI-FIB-UPC cbea) Invocación Puerto WS Avión Invocación Puerto WS Hotel Invocación Puerto WS Coche Composición de servicios Curso 2015/2016 30 / 38 Implementación de composiciones WS-BPEL - Ejemplo - Servicio de reserva de viajes <process name="AgenteViajes"> <partnerLinks> <partnerLink name="ClientPort" ... /> <partnerLink name="AereolineaPort" ... /> ... /> <variables> <variable name="AereoIn" messageType="AerolineaServ" ... /> <variable name="AereoOut" messageType="AerolineaServ" ... /> ... /> <sequence> <receive name="inicio" partnerLink="ClientPort" operation="obtenerOferta" variable="datosEntrada" ... /> <assign> <copy> <from> $datosEntrada.aereo </from> <to> $AereoIn </to> ... /> <invoke partnerLink="AereolineaPort" operation="reservaAereo" inputVariable="AereoIn" ouputVariable="AereoOut" ... /> ... <reply partnerLink="ClientPort" operation="obtenerOferta" variable= ... ... /> </process> ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 31 / 38 Implementación de composiciones Lenguajes de composición - WS-CDL Se basa en la descripción de los servicios mediante WSDL (Web Services Description Language) No permite definir procesos ejecutables, es un lenguaje de definición Permite definir las interacciones entre los diferentes participantes de la composición (coreografı́a) Cada interacción puede implementarse a partir de mecanismos diferentes (por ejemplo WS-BPEL) Permite la interoperabilidad entre servicios al ser independiente de la implementación de las interacciones ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 32 / 38 Implementación de composiciones WS-CDL - Ejemplo - Servicio de reserva de viajes WD-CDL (Viaje) WS Avión <choreography name="viaje" ... Cliente WS Viaje <interaction <participate toRole="..." fromRole="..." <exchange action="..." informationType="..." <record name="..." <source variable="..." <target variable="..." WS Hotel WS Coche ECSDI (LSI-FIB-UPC cbea) ... </choreography> Composición de servicios Curso 2015/2016 33 / 38 Problemas 1 Introducción 2 Descripción de Servicios 3 Estrategias de composición 4 Implementación de composiciones 5 Problemas ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 34 / 38 Problemas Problemas de la Orquestación/Coreografı́a Tienden a obtener composiciones estáticas Son sensibles al fallo de los servicios (el fallo de un solo servicio acaba el proceso) La complejidad de los procesos los hacen difı́ciles de diseñar y depurar Los servicios son modelados al mismo nivel de abstracción y granularidad independientemente de su complejidad o función Suele haber poco conocimiento acerca del contexto de las interacciones (normas/regulaciones) ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 35 / 38 Problemas Problemas de la Orquestación/Coreografı́a e-Business El manejo del flujo de ejecución en entornos abiertos no es trivial No todos los servicios pertenecen a la misma organización No podemos asumir que todas las partes cumplirán su cometido correctamente ¿Deberı́a ser necesario un acuerdo previo entre las partes? ¿Tratamiento de servicios esenciales de terceras partes que dejan de funcionar? ¿Tratamiento de la evolución de aplicaciones y procesos? ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 36 / 38 Problemas Problemas de la Orquestación/Coreografı́a e-Business Los objetivos y procesos de las aplicaciones evolucionan con el tiempo Diseño: No se pueden prever todas las posibles interacciones Implantación: Se deberı́a suponer una composición dinámica Gestión: Cambio/adaptación/evolución deberı́an ser un elemento natural Las tecnologı́as a usar deberı́an Permitir adaptarse a un entorno cambiante Permitir la reconfiguración sencilla de los procesos Permitir la adaptación dinámica a las necesidades ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 37 / 38 Problemas Composición - Flexibilidad - Adaptación Uso de metodologı́as de inteligencia artificial, teorı́a de instituciones y organizaciones De este modo: Se pueden tener maneras más flexibles de modelar las interacciones Se puede abstraer por encima de los detalles de bajo nivel Distinguir entre el QUE hacer del COMO hacerlo Se puede describir mejor el contexto (estado) Se puede describir el cambio que suponen las interacciones en el contexto ECSDI (LSI-FIB-UPC cbea) Composición de servicios Curso 2015/2016 38 / 38