Presentación del curso -...

31
Técnicas Avanzadas de Middleware Presentación del curso

Transcript of Presentación del curso -...

Page 1: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Técnicas Avanzadas de Middleware

Presentación del curso

Page 2: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Ponente

Agustín Santos Méndez● Experiencia laboral superior a 25 años.

– Proyectos de integración de sistemas complejos con Middleware.

● Profesor asociado en la Universidad Rey Juan Carlos (Madrid) desde 2002.– 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.

Page 3: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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

Page 4: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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.

Page 5: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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

Page 6: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Razones

● Construir sistemas distribuidos es muy habitual:– Ejemplos: Sistemas de control industrial, Aplicaciones

móviles, Big Data, Internet of Things, Aplicaciones Web, Integración de backoffice, etc.

● Pero construir un sistema distribuido es complejo:

– 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.

Page 7: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Middleware

● ¿Podemos hacer una aplicación cliente-servidor 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!!

Page 8: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del 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”.

Page 9: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Sistemas Distribuidos

● Múltiples ordenadores ● Nodos físicos diferentes, cada uno con su memoria,

CPU, etc.

● Interconectados● 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.

Page 10: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Concepto de Middleware

“ ....are services to facilitate the development and deployment of distributed applications in hete-rogeneous environments”

“The role of middleware is to ease the task of de-signing, programming and managing distributed applications by providing a simple, consistent and integrated distributed programming envi-ronment”

Page 11: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Más definiciones

● “.. layer of software above the operating syste-ms 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 netwo-rk, OS, programming languages, etc.”

Page 12: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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.

Page 13: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Concepto de Middleware

Platform2

Platform1

MIDDLEWARE

Applications&

Services

MIDDLEWARE

Network

Applications&

Services

Page 14: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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.)

Page 15: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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)

Page 16: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Ejemplos de Middlware

● Algunos middleware conocidos en la industria:● CORBA● DCE● RMI● Web Services● DCOM, COM+● Remoting● JXTA,● MQSeries● Java EE● Hadoop, Spark

Page 17: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Clasificación de Middleware● Una posible clasificación:

● Remote invocation mechanisms

– RPC, CORBA, RMI, DCOM, Remoting, etc...

● Naming and directory services

– JNDI, LDAP, COSS Naming, COSS trader, etc...

● Message-oriented middleware

– 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,

Page 18: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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.●

Page 19: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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

Page 20: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Tendencias

● Visión tradicional del middleware:

Application

Middleware (API, Tools)

Operating System

ProgrammingLanguage(C++,..)

Page 21: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Tendencias

● La visión actual:

Application

Middleware (API, Tools)

Operating System

ProgrammingLanguage(Java, .Net,..)

Page 22: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

Tendencias

● La visión actual:

Application

Web Systems

ProgrammingLanguage

Middleware (Web Technologies)

Operating System

Page 23: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

¿El Futuro?

● Una visión de futuro:● El Lenguaje de Programación es Distribuido

Application

Operating System

DistributedProgrammingLanguage(X10?..)

Page 24: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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?

Page 25: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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.

Page 26: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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?

Page 27: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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.

Page 28: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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)

Page 29: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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

Page 30: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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

Page 31: Presentación del curso - repositorio.cedia.org.ecrepositorio.cedia.org.ec/bitstream/123456789/966/1/Presentación del curso.pdfObjetivos del Curso El asistente al final del curso

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