Download Great Day

Document related concepts
no text concepts found
Transcript
Técnicas Avanzadas de Middleware
Presentación del curso
Ponente
Agustín Santos Méndez
●
Experiencia laboral superior a 25 años.
–
●
Profesor asociado en la Universidad Rey Juan
Carlos (Madrid) desde 2002.
–
●
Proyectos de integración de sistemas complejos con
Middleware.
Imparte asignaturas de sistemas distribuidos y
programación, entre otras.
Actualmente ingeniero investigador en Imdea
Networks.
–
Investigando en: redes sociales, sistemas distribuidos,
teoría de juegos, big data, data análisis.
Objetivos del Curso
●
●
Introducir el concepto de Middleware
●
Tipologías
●
Aplicaciones y mercado
●
Principios básicos
Tendencias del Middleware
●
●
Middleware + Lenguaje de Programación =
Sistemas Distribuidos
Técnicas actuales para la construcción de un
Middleware
Objetivos del Curso
●
El asistente al final del curso deberá:
●
●
●
Conocer el estado del arte de los principales
conceptos utilizados en los middleware modernos
(basados en objetos remotos).
Conocer (y utilizar) al menos dos de los principales
middleware de la industria.
Saber razonar sobre las características comunes a
un gran subconjunto de middleware.
Conocimientos previos
●
●
Este curso es de nivel avanzado para final de
grado o de master
Es recomendable disponer de cursos previos
en:
●
Programación Orientada a Objetos
●
Lenguajes de programación
●
Sistemas distribuidos
●
Tecnologías web
●
Compiladores
Razones
●
Construir sistemas distribuidos es muy habitual:
–
●
Pero construir un sistema distribuido es
complejo:
–
●
Ejemplos: Sistemas de control industrial, Aplicaciones
móviles, Big Data, Internet of Things, Aplicaciones Web,
Integración de backoffice, etc.
Problemas derivados de: comunicaciones, concurrencia,
heterogeneidad, sistemas desacoplados, evolución
tecnológica, cluster, etc.
Análisis de Mercado: Software de
Infraestructura de Aplicaciones y Middleware
(AIM) 2011, Gartner: 19.300 millones dólares.
Middleware
●
●
●
¿Podemos hacer una aplicación clienteservidor en 40 líneas de código?
¿En apenas unos pocos minutos?
Se puede hacer si disponemos del middleware
apropiado.
●
Y nosotros lo haremos durante el curso!!
Sistemas Distribuidos
●
¿Qué es un sistema distribuido?
“You know you have one when the crash of a
computer you’ve never heard of stops you from
getting any work done.” Leslie Lamport
●
Algunas definiciones:
●
●
“A collection of (perhaps) heterogeneous nodes
connected by one or more interconnection networks
which provides access to system-wide shared
resources and services”.
“A collection of independent computers that appears to
its users as a single coherent system”.
Sistemas Distribuidos
●
Múltiples ordenadores
●
●
Interconectados
●
●
Nodos físicos diferentes, cada uno con su memoria,
CPU, etc.
Mecanismos de comunicación usando una red
Mantienen un estado común
●
El servicio distribuido que genera un estado
distribuido o replicado entre los nodos.
Concepto de Middleware
“ ....are services to facilitate the development and
deployment of distributed applications in heterogeneous environments”
“The role of middleware is to ease the task of designing, programming and managing distributed
applications by providing a simple, consistent
and integrated distributed programming environment”
Más definiciones
●
●
●
“.. layer of software above the operating systems and the network substrate, but below the
application”
“.. higher level programming abstractions for
developing the distributed application”
“.. it masks the heterogeneity programmers of
distributed applications have to deal with network, OS, programming languages, etc.”
Por similaridad
●
●
Un sistema operativo es “el software que hace
que el hardware se pueda utilizar”
El middleware es el software que hace posible
programar un sistema distribuido.
Concepto de Middleware
Applications
&
Services
Applications
&
Services
MIDDLEWARE
MIDDLEWARE
Platform
2
Platform
1
Network
Middleware
●
Da soporte para las interacciones
●
●
●
Actúa de pegamento que une los componentes del
sistema distribuido
Facilita la interacciones entre componentes:
soporta servicios de nombrado, de descubrimiento,
etc.
Gestiona la diversidad de los componentes
(diversidad en lenguajes de programación, de S.O.
Etc.)
Middleware
●
Facilita las interacciones
●
●
●
●
Aporta soluciones para los problemas más
comunes (inconsistencias, sincronización, etc.)
Da soluciones para que el sistema sea abierto (se
pueden introducir nuevos componentes)
Da soporte para los problemas (fault recovery,
replicación)
Gestiona y monitoriza el sistema (logging,
monitoring)
Ejemplos de Middlware
●
Algunos middleware conocidos en la industria:
●
CORBA
●
DCE
●
RMI
●
Web Services
●
DCOM, COM+
●
Remoting
●
JXTA,
●
MQSeries
●
Java EE
●
Hadoop, Spark
Clasificación de Middleware
●
Una posible clasificación:
●
Remote invocation mechanisms
–
●
Naming and directory services
–
●
JNDI, LDAP, COSS Naming, COSS trader, etc...
Message-oriented middleware
–
●
RPC, CORBA, RMI, DCOM, Remoting, etc...
JMS (Java Message System), MQSeries, MQSI, etc...
Publish/subscribe systems
–
JMS (Java Message System), some proprietary systems, etc...
●
Transactional middleware
●
Database-Oriented middleware
●
Big Data middleware
–
●
Haddop, Spark, ..
Grid and P2P middleware
–
Jxta,
Distributed Object Middleware
●
El foco de este curso serán los middleware
orientados a objetos distribuidos.
●
●
●
●
Si entendemos estos middleware es más fácil
comprender cómo funcionan el resto.
Se pueden simular los otros middleware utilizando
los middleware con objetos distribuidos
Aportan una visión sobre el lenguaje de
programación que nos nos dan los demás.
Middleware D.O.
●
Es la mezcla de dos tecnologías
●
Objetos
–
–
–
●
Herencia
Encapsulación
Polimorfismo
RPC o Remote Procedure Call
–
–
–
Distribución
Heterogéneo
Data Marshalling
Tendencias
●
Visión tradicional del middleware:
Application
Middleware
(API, Tools)
Operating System
Programming
Language
(C++,..)
Tendencias
●
La visión actual:
Application
Programming
Language
(Java, .Net,..)
Middleware
(API, Tools)
Operating System
Tendencias
●
La visión actual:
Application
Middleware
(Web Technologies)
Operating System
Programming
Language
Web Systems
¿El Futuro?
●
Una visión de futuro:
●
El Lenguaje de Programación es Distribuido
Application
Distributed
Programming
Language
(X10?..)
Operating System
Principios fundamentales
●
En todo sistema distribuido solemos tener
problemas fundamentales.
●
●
●
Descubrimiento (Discovery): ¿Cómo sabe un
componente que existen otros remotos?
Descripción (Description): ¿Cómo sabe un
componente que lo que pueden hacer los demás?
Interacción (Interaction): ¿Cómo se solicitan y se
responden las peticiones?
Lenguaje de programación
●
●
●
Esos principios no suelen ser relevantes en los
sistemas no distribuidos.
El lenguaje de programación no necesita
ofrecer soluciones a tales problemas.
Por ejemplo:
●
●
●
Para descubrir que existe una clase, variable o componente el
programador la incluye directamente en su código. El compilador/linker
resuelve el problema.
Para describir lo que hace una clase, solemos utilizar una
especificación (“.h”), interfaces, etc. El compilador resuelve el problema.
Para interactuar, simplemente hacemos llamadas a métodos. El
compilador o el intérprete se encarga de resolver el problema.
Técnicas Avanzadas
●
Pero para hacer un middleware moderno
tenemos que incorporar esos y otros
mecanismos al lenguaje.
●
¿Se puede hacer?
●
¿Cómo?
●
●
¿Hasta qué punto eso puede alterar el
funcionamiento de un programa?
¿Siguen siendo válidos los modelos de
programación habituales?
●
¿Es el modelo O-O un modelo válido?
●
¿Hay alternativas?
Objetivo del curso (de nuevo)
●
Durante el curso vamos a enfrentarnos a esas
interrogantes.
●
●
Algunas están resueltas en lenguajes modernos
(C# o en Java)
Otras se están investigando:
–
–
●
Scala, X10, etc.
Modelos de Actores, Active Objects, etc.
Muchas quizás no tengan sentido
–
Web Services propone un modelo muy diferente.
Qué vamos a ver
●
●
●
●
●
Construir un sistema distribuido usando un
middleware
Estudiar qué hace ese middleware (y qué no
hace)
Cómo afecta al modelo de programación
tradicional.
Qué razones hay para que suceda eso
Cómo se ha construido el middleware (criterios
de diseño)
Qué vamos a ver
●
●
Mecanismos de construcción y destrucción de
objetos remotos (modo de vida)
Fases de creación, activación y muerte de un
objeto remoto (ciclo de vida)
●
Limitaciones en el modelo actual.
●
Mecanismos de serialización
●
Factores que afectan el rendimiento
●
●
Mecanismos de descripción y descubrimiento
de objetos remotos
Sistemas de apilamiento de protocolos
Qué vamos a ver
●
●
●
●
●
Cómo se utiliza la reflexión del lenguaje de
programación
Cómo se interceptan las llamadas a objetos
remotos y cómo se gestionan.
Cómo se aplica la Programación Orientada a
Aspectos en los middleware
Cómo se construyen “proxys” de forma
dinámica (generación de código dinámico)
Cómo se construyen serializadores de forma
dinámica
Metodología del curso
●
El curso será MUY PRACTICO
●
●
●
Con pocas clases de teoría.
Muchas prácticas que permitan auto-explorar los
conceptos, decisiones, implicaciones del
middleware.
El desarrollo de las prácticas por parte del alumno
le permitirá al profesor introducir los conceptos.
●
El trabajo en grupo será fundamental
●
Grupos de discusión sobre lo aprendido