1.- Introducción a a la Computación distribuida Los componentes y objetos de una aplicación se localizan en distintos sistemas para permitir la distribución de la carga de trabajo entre una red. La computación ha evolucionado desde sistemas centralizados propietarios hasta un modelo de cliente ligero sobre internet con comunicación basada en estandards abiertos. Esa evolución influye en la forma en que los sistemas intercambian y procesan información. • • • • Monolítico Cliente/Servidor.- logica del negocio repartida (enlaces entre nodos) Cliente/Servidor 3 tier.- Idem, separando nivel de presentación (cliente remoto) Cliente ligero sobre internet.- Idem, pero basado en estandards (abiertos) Los protocolos estandard de internet (http,smtp,ftp,tcp/ip) facilitan la comunicación y refuerzan la interoperabilidad a traves de la red 1.1 Factores que empujan hacia la computación distribuida • • • Participantes (e interacciones) mas complejos • ej.- auge del e-comerce debido a internet, clientes globales Mayores requisitos de potencia, escalabilidad y fiabilidad Interoeprabilidad entre aplicaciones remotas 1.2 Ventajas de la computación distribuida • • • • • Permite el procesamiento distribuida Conecta las redes (ej a traves de WAN) Usa distintos tipos de computadores Puede proporcionar tolerancia a fallos Permite escalabilidad 1.3 Retos de la computación distribuida • • • • Mantenimiento de consistencia entre copias de los datos Coordinaciòn de las actualizaciones de BD Sincronizacion de relojes entre nodos Minimizar tiempo de baja por problemas de red 1.4 Inconvenientes computación distribuida actual • • • Interoperabilidad dependiende de plataformas/lenguajes (ej RMI) Protocolos fuertemente acoplados (ej DCOM incompatible con otras cosas) Muchos protocolos no pensados para internet (ej.- problemas con los cortafuegos) 1.5 Tendencia • • • 1 Independencia de vendedor/plataforma/lenguaje. Mejor poco acoplamiento entre aplics Facilidad para deployment (dejar servicios disponibles públicamente) Para mejorar el mantenimiento, implementaciones cliente y servidor del protocolo facilmente accesibles 2.- Tecnologías de computación distribuida 2.1 RPC (Remote Procedure Call) Bloque constructivo básico. RPC SOCKETS TCP, UDP IP Es similar a invocación de procedimientos habitual, pero invocante e invocado pueden residir en nodos distantes. Machine A (client) Machine B (server) Service request Service response Execution Thread Message Con mayor detalle: Binder RP C bind Look up request C omm.ServerServer module stub code Register service request AC K Look up response send RP C request call return RP C response return 2 Como diagrama de bloques: client process client code language specific call interface client stub DCE development environment IDL IDL sources IDL compiler server process server code language specific call interface server stub RPC API RPC API interface headers RPC run time service library RPC protocols security service cell service RPC run time service library distributed file service thread service DCE runtime environment 2.2 ROI (Remote Object Invocation) Invocación remota de objetos (deriva de RPC, pero adaptado al paradigma de programación Orientado a Objetos). Incluye corba, dcom, rmi, iiop, ... • • • Corba.- el protocolo iiop (inter-orb protocol) estandariza las interacciones cliente/servidor, pero los servicios de alto nivel (ej seguridad) no son interoperables. Ampliaciones no estandard Dcom.- propietario (solo windows), controles active-X inseguros (pueden invocar aplicaciones cliente), problemas con los cortafuegos Rmi.- no compatible corba, solo para java 2.3 SOA (Service Oriented Approach) Las organizaciones quieren unificar sus procesos de negocio en toda la cadena. En consecuencia, requieren tecnologias que soporten la comparticion de recursos de forma flexible y estandarizada. SOA define bloques constructivos independientes de la plataforma y el lenguaje de programación a los que se accede a traves de protocolos estandard de internet. SOA proporciona un marco estandard donde publicar, descubrir, e invocar servicios a traves de internet. Componentes SOA: • • • 3 Proveedor del servicio (crea un servicio y publica su interfaz e informacion de acceso a traves de un blorker). Fija categoria para clasificacion, nivel de seguridad y precio Broker. Puede ser publico o privado, especializado o no Solicitante del servicio (pregunta al broker, enlaza con el servicio, y lo invoca). Los servicios pueden seleccionarse de forma estatica o dinamica (en ese caso se puede buscar el mejor proveedor, o fijar determinada calidad de servicio) Los 3 componentes comunicados en red • • • proveedor(servicio,descripcion) [publica] broker(descripcion) solicitante [busca] broker solicitante [enlaza] proveedor Requisitos para SOA • • • 4 Interoperabilidad (la integracion se basa en protocolos de comunicacion abiertos, implementacion de sistemas usando estandards y protocolos abiertos -> independencia de lenguaje y plataforma) Lenguaje de descripcion.- La sintaxis del interfaz con el servicio debe definirse claramente, y debe ser no ambigua e independiente de la plataforma Obtención del servicio.- para integrar sistemas durante el diseño o durante al ejecución, necesitamos un mecanismo para obtener los servicios disponibles. Los servicios pueden clasificarse en jerarquias (según su función e invocación de sus métodos) 3.- Servicios web (SOA) Los Servicios web se diferencian de otras tecnologias de computacion distribuida en que podemos desarrollarlos sobre cualquier plataforma y lenguaje de programación, usando protocolos comunes. Se trata de desarrollar componentes manejables e interoperables (autocontenidos), reforzando por tanto la noción de modularidad. 3.1 Tecnologias base: • • • • XML.- base para codificación SOAP.- comunicación entre servicios web (mensajes) WSDL.- descripción de los servicios (interfaz) UDDI.- localización (descubrimiento) de los servicios 3.2 Servicios web y evolución en el uso de internet Hasta ahora acceso mayoritariamente manual (eyebased) dominado por interacciones B2C. El cliente puede navegar e iniciar transacciones. El siguiente objetivo es una interacción transaccional (B2B).- Gracias a la confluencia de las tecnologias web, Orientación a Objetos, y sistemas de informacion, podemos implementar interacciones entre sistemas de información de empresas diferentes. Ej.- permite iniciar automaticamente compras y trasacciones; publicar, localizar, e invocar dinamicamente servicios; introducir nuevos modelos de negocios (agentes inteligentes, mercados, etc.), ... Los servicios web son la base para las interacciones transaccionales en internet. 3.3 Ventajas/aplicaciones de los servicios web • • • • • Acoplamiento debil entre participantes (interfaces=wsdl) • El broker almacena y mantiene informacion sobre el tipo de servicios disponible, el solicitante busca determinado servicio, enlaza dinamicamente con el, e invoca la opración usando la información devuelta por el broker Reutilizacion de los componentes software • Encapsulación de funcionalidad Habilidad para adaptar aplicaciones existentes (servicio web como interfaz -wrap-) Acceso a procesos de negocio (en lugar de enfasis en la presentación de datos).- desacople entre logica de negocio y presentación Implementación de procesos de negocio • información (news, tiempo, deportes, etc.) • integracion (cadena de proveedores que proporcionan servicios transaccionales de pago a clientes -> mercados, reservas, etc.) • externalizacion (comparticion de informacion entre enpresas para complementar servicios (value chain) 3.4 Pila de tecnologías de los servicios web Las tecnologías sobre las que se construyen los servicios web forman una pila de niveles (cada nivel utiliza las funciones del nivel inmediatamente inferior, y proporcionan servicios al nivel inmediatamente superior. Además, esas tecnologías son estandard. 5 1. 2. 3. 4. 5. 3 aspectos a cubrir (responsabilidad compartida entre todos los niveles) • seguridad, gestion, calidad de servicio 6 niveles funcionales Flujo de servicios (WSFL) • Modelado de procesos de negocio, descripción de flujos de trabajo Descubrimiento de servicios (la descripcion debe estar disponible en tiempo de ejecucion; podemos usar WSDl local o buscar en registro UDDI) Publicacion de servicios (dejar wsdl en registro local, o dejarlo publico en reg UDDI) Descripción de servicio (info necesaria para invocar un servicio: WSDL) Mensajes (SOAP) • Facilita la interacción. Soporta modo documento y rpc (invocacion/respuesta) SOAP Envelope SOAP header Transactional context SOAP Body RPC Response (one of the two) SOAP Envelope SOAP Envelope SOAP header SOAP header Transactional context Transactional context Name of Procedure Input param 1 Input param 2 SOAP Body Return parameter SOAP Body Fault entry 6. Transporte (http, smtp, ftp, rmi-iiop, etc.) • Capacidad de comunicacion Las siguientes figuras ilustran el funcionamiento conjunto de los distintos componentes: 6 HTTP POST SOAP SOAP Envelope Envelope SOAP header Transactional context SOAP Body Name of Procedure Input parameter 1 SERVICE REQUESTER SERVICE PROVIDER Input parameter 2 Procedure SOAP engine HTTP engine HTTP engine RPC call HTTP Acknowledgement SOAP SOAP Envelope Envelope SOAP header Transactional context SOAP Body Return parameter Web services interfaces HTTP engine XML mapping HTTP wrapping stored procedure API Stored procedure interfaces database resource manager 7 Database stored procedure engine database management system SOAP engine external application SOAP engine 3.5 Ventajas servicios web Tecnologia Basado en estandards Language-neutral Independiente de la plataforma Bajo coste de entrada Puede desarrollarse usando distintas herramientas Arquitectura Desacopla interfaces cliente de implementaciones servidor Oculta detalles de implementación y tecnologia usando SOAP Proporciona interoperabilidad entre servicios web Facilita en encapsulamiento de legacy-applications como servicios web Aplicacion Combina procesos basicos de nuestro negocio con componentes externos Mejora la disponibilidad de servicios software granulares Permite vender software como un servicio 3.6 Retos de los servicios web • • • • • • • • Descubrimiento • Anunciarse a clientes potenciales, coherencia entre lo anunciado y lo ofrecido ante cambios Fiabilidad • Distintos proveedores (fiabilidad de cada proveedor, proveedores alternativos, etc.) Seguridad • Ahora se usa https. Se pretende incluir mecanismos de seguridad a nivel de método Transacciones • Los estandards WS-transaction y Transacion authority markup language (XAML) estandarizan el acceso a servicios transaccionales propietatios. Escalabilidad • Respuesta ante picos de carga, equilibrado de carga, etc. Manejabilidad • Son sistemas complejos. Las herramientas de gestión todavia estan madurando Contabilidad • Definicion de modelos de pago y tasas de acceso a los servicios Test • La ubicacion y calidad de servicio son dinamicas (complican la depuracion). Se persigue un tiempo de respuesta predecible Para cubrir esos retos, se están desarrollando nuevos estandards (ej.- GXA = Global XML web services architecture). 3.7 Otras tecnologias emergentes relacionadas con los servicios web Algunas ya aceptadas 8 • • jax (java api for xml) wsfl (web services flow language) Otras en proceso de maduración • GXA • WSIL (web services inspection language) • WSSL (web services security) 9 4.- Herramientas 4.1 Java Desde sun.java.com descargamos J2SE 1.4.2 (existe una versión más reciente, pero plantea problemas al utilizala con herramientas como Geronimo). El fichero es autoinstalable Posteriormente es conveniente ajustar la variable de estado JAVA_HOME para referenciar al directorio <dirInstalacionJava>\bin. Podemos probar el funcionamiento utilizando la orden java -version (NOTA.- normalmente será necesario incluir previamente en el path el directorio <dirInstalacionJava>\bin. 4.2 Eclipse+WTP Es una familia de herramientas en un entorno integrado. Facilitan el desarrollo de lugares web y aplicaciones web (soporta JSP, servicios web, y xml). Permite crear servicios y sus descripciones, y publicarlas en un registro uddi. Están diseñadas para desarrollo segun el modelo open-programming. Proporciona desarrollo integrado en todo el ciclo de vida (ej compilacion incremental, soporte para depuracion, etc.) El entorno se compone de varios plugins. El desarrollo de nuevos plugins lo facilitan los blloques constructivos, entornos y APIs. Ello permite a los desarrolladores de herramientas un desarrollo rapido para soportar tecnologias emergentes. 4.3 Apache Geronimo Combina las herramientas necesarias para construir aplicaciones web y servicios web. Incluye un servidor web combinado con un motor de servlets (para ejecutar código java que actua como extensiones del servidor web), paquetes de procesamiento de XML (Apache Axis), e incluso una Base de Datos. En el directorio que se genera existe una utilidad bin\startup para arrancar el servidor. Una vez arrancado, podemos probar su funcionamiento abriendo en un navegador la URL http://localhost:8080 (asumiendo que se ha instalado en el port 8080). Podemos comprobar el funcionamiento del motor de servlets mediante un ejemplo simple que se presentará en el propio laboratorio. 10