PROGRAMA ANALÍTICO DE LA ASIGNATURA

OBJETIVOS DE LA MATERIA

  • Introducir a los alumnos en los paradigmas de los sistemas distribuidos, sus modelos clásicos y fundamentos del área.
  • Incorporar habilidades de diseño y arquitectura para plataformas de middleware focalizando en aspectos de transparencia y tolerancia a fallos.
  • Ejecución colaborativa de aplicaciones prácticas distribuidas, incluyendo su documentación técnica y exposición.


UNIDADES TEMÁTICAS

UNIDAD 0 - Introducción

Presentación de la materia. Tendencias. Definición. Áreas de Aplicación. Características.
 

UNIDAD 1 - Herramientas de Diseño

Repaso de Multithreading y multiprocessing. Paralelización de tareas. Multiprocessors. Multicomputing.
Comunicación. Nombres y direccionamiento. Modelos de capas. Definición de interfaces. Protocolos.
Mensajes y Grupos. Middlewares. Práctica de diseño multicomputing.

Message Oriented Middleware (MOM). Resolución de sistemas distribuidos mediante MOMs. Casos de estudio de MOMs en la industria.
Diagramas y documentación técnica.

UNIDAD 3 - Fundamentos de Sistemas Distribuidos

Patrones de Comunicación. Request-Reply, Publisher-Subscriber, Pipelines, DAGs.
Arquitecturas Distribuidas Simples. Cliente-Servidor, Peer-to-Peer, RPC, Distributed Objects.
Distribución y coordinación de Procesos.
Modelado de cómputo distribuido. Práctica Map-Reduce.
Tiempo y relojes. Caso de estudio: NTP.
Sincronización de procesos. Orden. Estado. Coordinación, consistencia y cortes.
Casos de estudio de RPC y Distributed Objects: gRPC, Java RMI.
Casos de estudio de distribución y coordinación: MPI, Flink, Beam.

UNIDAD 3 - Aplicaciones Reales

Data Intensive Applications, Partitioning, Distributed Shared Memory (DSM), Distributed File Systems. Casos de estudio: NFS, HDFS. Caso de estudio: GCP y BigTable.
Sistemas Elásticos y de Alta Disponibilidad. Técnicas de diseño. Patrones de carga y disponibilidad.
Arquitecturas Orientadas a Servicios y Cloud. SOA, Microservices. Diseño, Procesamiento, Persistencia, Escalabilidad, Monitoreo.
Cloud Computing. Platform as a Service (PaaS). Caso de estudio: AppEngine
Práctica de diseño de arquitecturas distribuidas de gran escala

UNIDAD 4 - Tolerancia a Fallas y Tiempo Real

Tolerancia a fallos. Confiabilidad. Coordinación y Acuerdo.
Transacciones distribuidas. Algoritmos de consenso. Elección de líder. Generales bizantinos. Caso de estudio: Paxos.
Introducción a sistemas de tiempo real. Sistemas de control.
Trabajo integrador.


METODOLOGÍA

Cursos teórico-prácticos con exposición teórica de conceptos fundamentales. Resolución metódica de problemas tipo y ensayos sobre objetivos. Análisis, diseño e implementación de soluciones distribuidas por parte de los alumnos bajo dirección y control docentes. Modelización de algoritmos y arquitecturas según las unidades temáticas del programa mediante requerimientos abiertos que motiven la consulta a los docentes y la profundización del conocimiento a través de la bibliografía. Desarrollo de un trabajo práctico final que integre los conceptos aprendidos.


PRE-REQUISITOS

  1.  61.10 - Análisis Matemático III A
  2.  75.43 - Introducción a los Sistemas Distribuidos
  3.  75.59 - Técnicas de Programación Concurrente I


Última modificación: Friday, 26 de August de 2022, 00:13