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