1.- Introducción aa la Computación distribuida 1.1

Anuncio
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
Descargar