Upload
vuongnguyet
View
219
Download
0
Embed Size (px)
Citation preview
1
Middleware: Evolución en el desarrollo de aplicaciones
distribuidas
2
ContenidoContenido
Introducción
Middleware
� Introducción
� Evolución en el desarrollo de
aplicaciones distribuidas
Servicios Web
Grid Computing
Fernando Pech May
Fernando Pech May
3
IntroducciIntroduccióónn
4
Middleware� Software de conectividad que consiste en un conjunto de servicios
que permiten interactuar a múltiples procesos que se ejecutan en distintas máquinas a través de una red. Ocultan la heterogeneidad y proveen de un modelo de programación conveniente para los desarrolladores de aplicaciones.
� La organización IETF (Internet Engineering Task Force) en mayo de 1997 lo definió como sigue: – “Un Middleware puede ser visto como un conjunto de servicios y
funciones reutilizables, expandibles, que son comúnmente utilizadas por muchas aplicaciones para funcionar bien dentro de un ambiente interconectado”.
5
� El lugar donde normalmente ubicamos a los Midllewares, así
como el tipo de servicios que éstos ofrecen, varía según la
perspectiva de quien los utiliza. Por ejemplo:
� los desarrolladores de aplicaciones distribuidas suelen ubicar al
Middleware como la capa de software que se encuentra justo debajo
de la interfaz de programación de aplicaciones (API por sus siglas en
inglés).
�los especialistas de redes de interconexión se refieren al
Middleware como todo aquello que se encuentra por encima de IP.
�los que trabajan con aplicaciones, herramientas y mecanismos que
se encuentran entre estos dos extremos, clasifican a los Middlewares
como: Middlewares específicos de la aplicación (alto nivel);
Middlewares medios o los que se consideran genéricos, y
Middlewares específicos de los recursos (bajo nivel).
Middleware
6
� Lo anterior refleja que los Middlewares se extienden más allá de la red y pueden abarcar recursos para procesamiento, almacenamientoy cualquier otro elemento que esté conectado a la red.
� No todos los Middleware son iguales. Ejemplos: CORBA y SocketsTCP/IP.– Mientras que los Sockets no ofrecen control de tipos ni homogeneización
de arquitecturas, CORBA, DCOM, etc., ofrecen estas posibilidades.
� En la actualidad se cuenta con muchos productos y estándares Middlewares que dan soporte a los sistemas orientados a objetos:– DCOM (Distributed Component Object Model )
– CORBA (Common Object Request Broker Architecture)
– Java RMI
– Web Services (XML)
– RM-ODP (Modelos de referencia para procesamiento distribuido abierto del ISO/ITU-T)
Middleware
7
Middleware
� Resumen de características– Independiza el servicio de su implantación, del sistema
operativo y de los protocolos de comunicaciones.
– Permite la convivencia de distintos servicios en un mismo sistema.
– Permite la transparencia en el sistema.
� En general pueden ser vistos como– Abstracción de programación
– Infraestructura
8
Genealogía
del Middleware
9
Middlewares
Evolución Aplicaciones Distribuidas
Tiempo
Sockets
RPC
DCOM CORBA RMI
Servicios
Web
10
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Sockets
• Constituye la interfaz de programación de la capa de transporte
• Es un mecanismo de comunicación bidireccional
• El más ampliamente usado
• Nacieron con la familia de protocolos TCP/IP
• Existe prácticamente en cualquier plataforma de computación
Aplicación
Presentación
Sesión
Transporte
Red
Enlace
Física
Aplicación
Presentación
Sesión
Transporte
Red
Enlace
Física
11
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Remote Procedure Call (RPC)
• Creado por Bireel & Nelson en 1984
• Permiten a los programas llamar procedimientos
localizados en otras máquinas
• Un proceso X en una máquina A, puede llamar a
un procedimiento localizado en una máquina B
• Información puede llevarse del proceso
invocador al invocado dentro de los parámetros
• Ningún mensaje u operación de E/S es visible
para el programador
12
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Rutina
LlamanteRutina
Llamada
Stub
ClienteStub
Servidor
Red Red
ArgumentosResultados
Petición Petición
ArgumentosResultados
RespuestaRespuesta
Modo de operación
Proceso Cliente
Main(){
some code;
...
call rpc(a,b,c);
...
más código;
}
send((x=a, y=b), rpc)
receive(c=z, rpc)
Proceso Servidor
Procedure rpc(x,y,z){
código que usa x,y;
...
return(z=result);
}
receive(x,y,invocador)
send(z,invocador)
13
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
REMOTE METHOD INVOCATION (RMI)REMOTE METHOD INVOCATION (RMI)REMOTE METHOD INVOCATION (RMI)REMOTE METHOD INVOCATION (RMI)
• Permite la invocación remota de métodos en objetos que residen
en diferentes máquinas virtuales
• Permite la invocación de métodos remotos por Applets
• Integra el Modelo de Objetos Distribuidos al lenguaje Java de
modo natural, preservando en lo posible la semántica de objetos
en Java
• Permite la distinción entre objetos locales y remotos
• Permite diferentes semánticas en las referencias a objetos
remotos: no persistentes (vivas), persistentes, de activación lenta
• Facilita el desarrollo de aplicaciones distribuidas
14
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Modelo de Objetos DistribuidosModelo de Objetos DistribuidosModelo de Objetos DistribuidosModelo de Objetos Distribuidos
A FB
C
D
EInvocación
local
Invocación
local
Invocación
localInvocación
remota
Invocación
remota
Petición
Respuesta
Un objeto remoto es aquel
capaz de recibir RMIs (B, F)
Objeto Remoto
Datos
Implementación
de métodos
m1
m2
m3
m4
m5m6
Interfaz Remota
Una interfaz remota especifica los
métodos que pueden ser invocados
remotamente
15
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Common Object Request Broker Architecture(CORBA)
• En 1989 se conforma el Grupo de Administración de
Objetos (OMG - Object Management Group) para
coordinar las especificaciones para cómputo
distribuido independiente de plataforma y lenguaje
• CORBA es una solución basada en un modelo
abierto propuesto por OMG
•Se basa en el protocolo Internet InterORB (IIOP) de
comunicación entre ORB
•Object Request Broker (ORB) son los gestores de
mensajes entre las distintas capas del sistema
16
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Arquitectura de CORBA
CORBA proporciona una infraestructura de comunicaciones para
la colaboración entre objetos heterogéneos distribuidos
CORBA simplifica la interoperabilidad entre aplicaciones, así como
también proporciona las bases para la colaboración entre objetos
distribuidos
Cliente Implementación del Objeto
Repositorio de
Interfaces (IR)
Invocación
Dinámica de
Interfaces
(DII)
IDL
Stubs
Interface
ORB
Adaptador
de
Objetos
Invocación
Dinámica
Skeleton
(DSI)
IDL
Skeleton
ORB
17
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
Procesamiento de definiciones IDL para generar StubsDefiniciones IDL
Precompilador
Skeletons
Código de
Implementación
Repositorio
de
Interfaces
Repositorio
de
Implementación
Stubs
del
Cliente
Skeletons
del
Servidor
Stubs del
Cliente
Stubs del
Cliente
Compilador
Implementación
del
Objeto
18
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
CORBACORBACORBACORBA
•VentajasVentajasVentajasVentajas::::
Clientes y servidores pueden estar escritos en cualquier lenguaje gracias al alto grado de abstracción del lenguaje de definición de interface (Interface Definition Language,IDL)
Alto rendimiento
• InconvenientesInconvenientesInconvenientesInconvenientes::::
Escribir aplicaciones distribuidas con CORBA no es trivial.
La especificación CORBA es muy pesada y los fabricantes han implementado un subconjunto.
Problemas de compatibilidad entre los ORB’s.
19
Evolución de Aplicaciones Evolución de Aplicaciones
DistribuidasDistribuidas
DISTRIBUTED COMPONENT OBJECT MODEL (DCOM)DISTRIBUTED COMPONENT OBJECT MODEL (DCOM)DISTRIBUTED COMPONENT OBJECT MODEL (DCOM)DISTRIBUTED COMPONENT OBJECT MODEL (DCOM)
• DCOM permite llamadas a los objetos remotos
• Soporta interfaces múltiples escritas en un lenguaje IDL similar a C++
• El protocolo de intercambio de información es el “Object Remote Procedure Call (ORPC)”
VentajasVentajasVentajasVentajas::::
• DCOM permite el uso de varios lenguajes de programación
• DCOM soporta recolección distribuida de basura
InconvenientesInconvenientesInconvenientesInconvenientes::::
• Muy ligado a los sistemas operativos de Microsoft, aunqueexisten implementaciones para Unix, y Apple Macintosh
20
Servicios Servicios WebWeb
21
Antecedente: Aplicaciones Web
22
Servicios WebServicios Web
DefinicionesDefinicionesDefinicionesDefiniciones
• Componente de software reutilizable y distribuido
que ofrece una funcionalidad concreta,
independiente tanto del lenguaje de programación
en que está implementado como de la plataforma de
ejecución
• Aplicaciones self-contained que pueden ser
descritas, publicadas, localizadas e invocadas sobre
la Internet (o cualquier otra red)
23
Servicios WebServicios Web
Arquitectura Orientada a Servicios (SOA)Arquitectura Orientada a Servicios (SOA)Arquitectura Orientada a Servicios (SOA)Arquitectura Orientada a Servicios (SOA)
Proveedor de Proveedor de Proveedor de Proveedor de ServiciosServiciosServiciosServicios
Registro de Registro de Registro de Registro de ServiciosServiciosServiciosServicios
Solicitante del Solicitante del Solicitante del Solicitante del ServicioServicioServicioServicio
Publicar
Localizar
Invocar
Descripción
del servicio
Descripción
del servicio
24
1.- ¿Qué
servicio Web
puede hacer X?
2.- El servicio K
en el servidor AServidor UDDI
3.- ¿Cómo te invoco
servicio K?
4.- Revisa
esto: WSDL
5.- Invoca
operación X
< SOAP >
6.- Resultado de
la operación X
< SOAP >
Servidor A
Cliente
Web Services: Invocación básica (I)
25
Web Services: Invocación básica (II)
Stub
Cliente
Aplicación
Cliente
Implementación
del Servicio
1
6
Stub
Servidor
3
4
WSDL
int operacionX(int a, int b)
int operacionY(int c, int d)
Contenedor de Web Services
Servidor
2
5
Cliente
26
Plataformas de Plataformas de
Desarrollo para Desarrollo para
Servicios WebServicios WebMicrosoft .NET
27
Plataformas de Plataformas de
Desarrollo para Desarrollo para
Servicios WebServicios WebJava 2EE
28
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
UbiquitousUbiquitous ComputingComputing
GridGrid ComputingComputing
29
Ubiquitous Computing
30
UbiquitousUbiquitousUbiquitousUbiquitous ComputingComputingComputingComputing
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
Esta propuesta se ha posicionado como la tercera
generación o paradigma en la computación
1a. Generación : “Una computadora, muchas personas”
2a. Generación : “Una computadora, una persona”
3a. Generación : “Muchas computadoras, una persona”3a. Generación : “Muchas computadoras, una persona”
El Ubiquitous computing nos lleva al incremento en el
uso de sistemas de cómputo a través del ambiente
físico, haciéndolos disponibles y a la vez invisibles al
usuario.
31
Generaciones:
MainframesPCs
Computación
Ubicua
32
UbiquitousUbiquitousUbiquitousUbiquitous ComputingComputingComputingComputing
La computación ubicua se caracteriza por dos
atributos principales:
• UbicuidadUbicuidad. Donde las interacciones son dirigidas
hacia múltiples interfaces en lugar de una sola
computadora
• TransparenciaTransparencia. Donde la tecnología esta tan
incorporada en nuestra vida que es invisible para
nosotros
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
33
Aplicaciones
� Numerosas aplicaciones soportadas a través de Internet se enriquecen y amplían sus servicios; e-commerce, e-banking, e-education, e-goverment, e-business.
– Ejemplos:
• El aumento de la potencia de las agendas digitales personales permitirá que se conviertan en asistentes personales, manejadas mediante la voz, no sólo gestionarán nuestra agenda, si no que se convertirán, gracias a numerosos sensores(biométricos, de localización, etc.), en vigilantes de nuestra salud, guías turísticos, consejeros financieros, localizadores.
• Los espacios inteligentes son otro campo de aplicación de la computación ubicua; viviendas, salas de reuniones, consultas médicas, centros de educación y entrenamiento, centros de mando militar, gabinetes de crisis, todo tipo de vehículos, etc. Dispondrán de acceso a todo tipo de información, facilitarán el trabajo distribuido y colaborativo con otros individuos en la misma sala o de forma remota, identificará a los usuarios y sus acciones, realizarán sumarios de las actividades y deliberaciones llevadas a cabo, etc.
34
AUTOMÓVIL
• DISPOSITIVOS DE MÚLTIPLE PROPÓSITOS• INTERFACES• OPERACIONES CONCURRENTES• COMPUTADORAS (BUS LOCAL E INTERNET)•WIRELESS CORTO ALCANCE (LLAVES) Y ÁREA AMPLIA(CELULAR)• SISTEMAS DE SEGURIDAD• FUNCIONES PERSONALIZADAS (NO PC)
Aplicaciones
35
LUGAR MÓVIL DE TRABAJO
• CONVERSIÓN DE OFICINAS TRADICIONALES• LAPTOP• PDA• IMPRESORAS• FAX
TECNOLOGÍA WIRELESS
Aplicaciones
36
HOGAR
• TELÉFONOS MÓVILES• COMPUTADORAS• APARATOS DE ENTRETENIMIENTO• CONTROL DE PUERTAS Y VENTANAS• SISTEMAS DE AIRE ACONDICIONADO Y CALEFACCIÓN• DISPOSITIVOS DOMÉSTICOS• SISTEMAS DE SEGURIDAD
TRANSMISIÓN DE INFORMACIÓN VÍA LÍNEAS DE POTENCIA Y WIRELESS
Aplicaciones
37
COMUNICACIONES PERSONALES
• TELÉFONOS MÓVILES Y TRADICIONALES• LOCALIZADORES• FAX• COMPUTADORAS• VIDEO GRABADORAS• CONSOLAS DE JUEGOS• CÁMARAS DIGITALES• GRABADORES DE MÚSICA Y VIDEO
TECNOLOGÍAS GPRS (GENERAL PACKET RADIO SERVICE)
Y UMTS (UNIVERSAL MOBILE TELECOMMUNICATIONS SYSTEM)
Aplicaciones
38
SISTEMAS DE LOCALIZACIÓN
• GPS (Global Positioning System)• GSM (Global System for Mobile Communications)
Aplicaciones
39
Grid Computing
40
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
GridGridGridGrid ComputingComputingComputingComputing
Un grid es una colección de máquinas, algunas
veces referidas como “nodos”, “recursos”,
“miembros”, “donadores”, “clientes”, “hosts”,
“motores”, y muchos otros términos. Todos
contribuyen a que cualquier combinación de recursos
en el grid se visualicen como un todo.
Algunos recursos pueden ser usados por todos los
usuarios del grid mientras que otros pueden tener
restricciones específicas
41
42
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
GridGridGridGrid ComputingComputingComputingComputing
El grid virtualiza recursos heterogeneos
dispersos geográficamente
43
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
Tipos de Recursos en un Tipos de Recursos en un Tipos de Recursos en un Tipos de Recursos en un GridGridGridGrid
• Procesamiento
• Almacenamiento
• Comunicaciones
• Software y licencias
• Equipo especial
• Capacidades
• Arquitecturas
• Políticas
44
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
GridGridGridGrid ComputingComputingComputingComputing
El recurso más común son los ciclos de cómputo
proporcionados por los procesadores de las
máquinas en el Grid.
Formas principales de procesamiento en un Formas principales de procesamiento en un Formas principales de procesamiento en un Formas principales de procesamiento en un GridGridGridGrid
1. Ejecutar una aplicación existente en una máquina
disponible en el Grid en lugar de hacerlo localmente
2. Ejecutar una aplicación diseñada para dividir su
trabajo de tal forma que las partes separadas
puedan ejecutarse en paralelo en diferentes
procesadores
3. Ejecutar una aplicación que necesita ser ejecutada
muchas veces en muchas máquinas en el Grid
45
¿¿Hacia dHacia dóónde vamos ?nde vamos ?
GridGridGridGrid ComputingComputingComputingComputing
• El segundo recurso más común usado en un Grid es el
almacenamiento de datos.
• Un grid proporciona una vista integrada de almacenamiento de
datos en ocasiones llamada “data grid”
• Cada máquina en el Grid usualmente proporciona alguna
cantidad de almacenamiento para el uso del Grid, aunque
temporalmente
Tipos de almacenamiento proporcionados por el Tipos de almacenamiento proporcionados por el Tipos de almacenamiento proporcionados por el Tipos de almacenamiento proporcionados por el GridGridGridGrid
• Memoria unida al procesador (Memoria de acceso rápido pero
volátil)
• Almacenamiento secundario (Medios de almacenamiento
permanentes)
46
Conclusiones�Unos de los grandes retos de la computación distribuida ha sido la
interoperabilidad entre equipos (Corba, Web Services) y su
escalabilidad.
� Cuando las aplicaciones crecen es deseable aprovechar la
capacidad de cómputo que se tienen en muchas máquinas que viven
en el ocio (grid computing).
�Los dispositivos inalámbricos pueden tener la capacidad de
movilidad, lo que da pie a aplicaciones que desean interactuar
según el contexto donde están sin problemas de comunicación
(computación ubicua).
� Conforme avanzan las tecnologías de comunicaciones y
miniaturización surgen nuevos nichos de oportunidad para los
sistemas distribuidos tanto a gran escala como ubicuos, lo que
confirma que es un área de la informática que se mantiene en
constante evolución..