Revista Venezolana de Computación ISSN: 2244-7040 http://www.svc.net.ve/revecom Vol. 2, No. 1, pp. 1-13, Diciembre 2015 Selección de los Mejores Artículos de CoNCISa 2015 de Computación CrESTa: Ejecución Tolerante a Fallas de Servicios Web Compuestos basado en Crónicas Marcos Grillo 1 , Yudith Cardinale 1 , José Aguilar 2 marcos.grillor@gmail.com, yudith@ldc.usb.ve, aguilar@ula.edu.ve 1 Departamento de Computación, Universidad Simón Bolívar, Caracas, Venezuela 2 Departamento de Computación, Universidad de Los Andes, Mérida, Venezuela Resumen: Los Servicios Web Compuestos (SWC) facilitan la definición e implementación de procesos delicados y complejos de una forma confiable y versátil. Una vez que un usuario envía un requerimiento al sistema, durante la fase de composición se realiza el descubrimiento y la composición de varios Servicios Web, que en conjunto darán respuesta a la petición del usuario. Posteriormente un motor de ejecución realizará las invocaciones apropiadas de dichos Servicios Web para finalmente retornar la respuesta al usuario. En el área de motores de ejecución de SWC se han realizado diversas propuestas que incluyen sistemas centralizados o distribuidos, que implementan mecanismos de tolerancia a fallas para garantizar el funcionamiento y consistencia del sistema. En este artículo se propone CrESTa (ChRonical- based Execution engine for composite web Service with fault TolerAnce), un motor de ejecución tolerante a fallas, que modela los SWC con Redes de Petri Coloreadas, usa crónicas para detectar fallas y considera parámetros de calidad de servicio. Presentamos la arquitectura de CrESTa y mostramos su funcionamiento con un caso de estudio práctico. Palabras Clave: Composición de Servicios Web; Tolerancia a Fallas; Crónicas; Calidad de Servicio. Abstract: Composite Web Services (CWS) facilitates complex and delicate process definition and implementation. A user might query a system for a requirement which is processed and transformed in a CWS. After the processing phase, an execution phase is needed which is executed by an engine, whose only function is to call all the Web Services involved to generate an answer that will satisfy the query. Several proposal has been done in execution engines, which includes both centralized and distributed approaches, and almost everyone implements recovery mechanisms to maintain the system stability and consistency. This article proposes CrESTa (ChRonical-based Execution engine for composite web Service with fault TolerAnce), a CWS execution engine with recovery mechanisms, that uses Collored Petri Networks for CWS representation, chronicles to detect failures, and considers quality assurance parameters. We present the architecture, and the execution process through a practical example. Keywords: Composite Web Services; Recovery Mechanisms; Chronicles; Quality of Service. I. I NTRODUCCIÓN Los Servicios Web (SW) han tenido un impacto contundente en nuestro día a día. Es muy común ver como universidades y empresas proveen servicios a través de la red para mejorar y optimizar procesos, permitiendo a las organizaciones procesar y comunicar datos sin la necesidad de conocer profundamente las tecnologías de cada organización [1]. Los SW han ganado considerable interés en investigaciones del sector académico y de la industria, dado que ofrecen un lenguaje neutral, débilmente acoplado, independiente de las plataformas y es- tandarizado para integrar aplicaciones y servicios dentro de organizaciones [2]. La composición de servicios web consiste en combinar SW desarrollados por diversas organizaciones que ofrecen diversas propiedades transaccionales, funcionales y calidad de ser- vicio [3]. Diversas razones pueden influir en la necesidad de crear un Servicio Web Compuesto (SWC), tal como la creación de aplicaciones que agreguen diversos SW existentes para satisfacer requerimientos de negocio dinámicos [4]. Por ejemplo, suponga un usuario que desea comprar un boleto de avión y provee información respecto a ciertos parámetros tales como límite de precio, aerolínea favorita y no desea escalas (estos parámetros representan los requerimientos funcionales); se puede establecer un SWC que contenga diversos SW: uno para reservar el boleto, otro que contenga la conexión con su banco para el proceso de pago y otro que le envíe un correo electrónico con la confirmación de su compra. Si existen varios SW que ofrecen las mismas funcionalidades, la selección puede ser guiada por los requerimientos no funcionales del usuario (e.g., tiempo máximo de ejecución, confiabilidad de los SW); asï para nuestro ejemplo, se elige el mejor entre 1