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
- 61.10 - Análisis Matemático III A
- 75.43 - Introducción a los Sistemas Distribuidos
- 75.59 - Técnicas de Programación Concurrente I