El propósito de esta materia es proporcionar al estudiante conocimientos teórico-prácticos que le permitan comprender los componentes fundamentales de los sistemas distribuidos.

El curso tendrá un carácter teórico-práctico a fin de familiarizar al estudiante con herramientas básicas de programación sobre plataformas distribuidas.

El contenido de este curso está organizado en siete temas: Generalidades de los sistemas distribuidos, comunicación, procesos, nominación, consistencia y duplicación, tolerancia a fallas y seguridad. Simultáneamente se estudian herramientas básicas de programación distribuida, tales como los sockets y librerías de comunicación.

Al finalizar el curso, el estudiante será capaz de identificar los componentes principales de un sistema distribuido y habrá adquirido conocimientos necesarios para analizar, diseñar y evaluar soluciones para ambientes de computación distribuida. Así mismo se habrá familiarizado con alguna herramienta básica de programación de aplicaciones distribuidas.

Sistema distribuido

Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones; cada máquina posee sus componentes de hardware y software que el programador percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). El programador accede a los componentes de software (objetos) remotos, de la misma manera en que accedería a componentes locales, en un grupo de computadoras que usan un middleware entre los que destacan (RPC) y SOAP para conseguir un objetivo.

Los sistemas distribuidos deben ser muy confiables, ya que si un componente del sistema se descompone, otro componente debe ser capaz de reemplazarlo. Esto se denomina tolerancia a fallos.

El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts (red de área local), centenas de hosts (red de área metropolitana), o miles, o millones de hosts (Internet); esto se denomina escalabilidad. 1​