Última actualización: 28/04/2023


Curso Académico: 2023/2024

Computación Distribuida
(15397)
Programa Académico de Ingeniería de Telecomunicación vía Grado en Ingeniería en Tecnologías de Telecomunicación (Plan: 511 - Estudio: 252)


Coordinador/a: DIAZ SANCHEZ, DANIEL

Departamento asignado a la asignatura: Departamento de Ingeniería Telemática

Tipo: Optativa
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
Arquitectura de Sistemas (o tener familiaridad con el trabajo en el laboratorio) Aplicaciones Telemáticas (o tener conocimientos de protocolos superiores, concretamente HTTP)
Objetivos
El objetivo de este curso es que el estudiante adquiera conocimientos para entender el funcionamiento y hacer uso de los sistemas modernos de computación distribuida que posibilitan muchos de los servicios populares que son ofrecidos y consumidos por millones de usuarios en todo el mundo, como pueden ser Dropbox, Spotufy, Youtube, Google Search Engine La filosofía de esta asignatura es facilitar el aprendizaje práctico de la computación distribuida a partir del uso de interfaces reales de servicios conocidos y actuales. Para lograr este objetivo, el alumno debe adquirir una serie de conocimientos y capacidades. Conocimientos Los conocimientos adquiridos al cursar esta asignatura son: 1. Conocer de la estructura de un sistema de comunicaciones distribuidas modernas, sus características internas y sus interfaces con las aplicaciones móviles, de escritorio y otros sistemas 2. Conocer los mecanismos básicos de comunicación en sistemas distribuidos mediante protocolos usados actualmente para interactuar con ellos como HTTP para interfaces REST o WebServices 3. Conocer los sistemas modernos de distribución de carga desde Enterprise Service Bus a los modernos sistemas de Map Reduce usados, por ejemplo, por Google, Amazon y muchos otros. 4. Conocer escenarios reales para aplicaciones web con muchas visitas (amazon, periódicos), arquitecturas de cloud para el desarrollo de aplicaciones y/o almacenamiento. 5. Conocer las ventajas y desventajas de estos sistemas y cuando una determinada aplicación debe ser implementada de forma distribuida (escalado de recursos y economía de centro de datos). Conocer casos reales de data sets que necesitan procesamiento distribuido. Capacidades específicas Las capacidades específicas que adquirirá el alumno al finalizar el curso: 1. Utilizar mecanismos básicos de comunicación en sistemas distribuidos. 2. Conocer aplicaciones centralizadas y distribuidas en red mediante prácticas demostrativas 3. Modelar y desplegar un sistema distribuido y hacer uso de aplicaciones y clouds existentes Capacidades generales En cuanto a las capacidades generales que adquirirá: 1. Habilidad para aplicar conocimientos de tecnologías de telecomunicación e ingeniería. Esta capacidad se trabajará especialmente en las prácticas de laboratorio así como en la resolución de ejercicios en las clases teóricas. 2. Habilidad para usar técnicas y herramientas de ingeniería necesarias para el ejercicio profesional 3. Habilidad para comunicarse de forma efectiva tanto de manera oral, escrita o gráfica tanto en español como en inglés a lo largo del desarrollo de las actividades propuestas en la asignatura (ejercicios, trabajos sobre nuevas tecnologías, etc.). 4. Reconocimiento de la necesidad de un aprendizaje continuo y la habilidad de obtener y aplicar la información requerida accediendo a literatura técnica relacionada con el ámbito de la asignatura tanto en español como en inglés 5. Conocimiento de nuevas tecnologías y tendencias en el campo de estudio
Competencias y resultados del aprendizaje
Descripción de contenidos: Programa
El contenido se divide en los siguientes temas: 1. Introducción a la computación distribuida 1.1. De RPC/Corba a Main Frame, Grid y Cloud Computing 1.2 Estado actual de las tecnologías 1.2.a Sistemas legados y evolución 1.2.b Sistemas distribuidos 1.2.c Cloud Computing 2. Sistemas Distribuidos y Cloud Computing 2.1 ¿Qué es? 2.2. Arquitecturas (IaaS, PaaS, SaaS) 2.2.a IaaS - Amazon EC2 2.2.b SaaS - App Engine/Azure 2.3 Almacenamiento distribuido y ejecución distribuida (en sistemas de cloud tipo Google, Azure o Amazon EC2) 2.3.b Security aspects in Cloud 2.4 Casos de uso 2.5. ¿Necesito Cloud para mi proyecto? 3. Protocolos de comunicaciones para sistemas distribuidos 3.1 Protocolos legados 3.2 Protocolos actuales 3.2.a REST - HTTP 3.2.b WebServices 3.2.c Mensajería 3.4 Sistemas Web de uso masivo modernos 3.5 Aplicaciones móviles y sistemas REST 3.5.a ¿Por qué REST/HTTP? 4. Bigdata: Mapreduce y otros sistemas 4.1 Big Table de Google y Hadoop 4.2 Introducción a Hadoop / Spark
Actividades formativas, metodología a utilizar y régimen de tutorías
Las actividades utilizadas para verificar las competencias y destrezas en el curso son : - Durante la primera mitad del curso se realizarán prácticas guiadas donde se modificará código proporcionado por el profesorado para adquirir de forma gradual las distintas destrezas necesarias, todas ellas relacionadas con el estudio de un caso de estudio presentado al principio de la asignatura para conocer los sistemas Cloud modernos como los proporcionados por Google y Amazon - Durante un período de seis semanas, los estudiantes se dividen en parejas que deben implementar un proyecto propio consistente en el diseño e implementación de una aplicación Cloud (o con acceso al Cloud) que haga uso de una o más de las tecnologías y paradigmas vistos durante el curso . - Búsqueda de documentos auxiliares para completar la información que se estudia en un tema. En su informe final, deben mencionar las fuentes de información utilizadas . - Uso de diferentes herramientas para la construcción de su proyecto software: máquinas virtuales, IDEs y controlador de versiones en las sesiones de laboratorio. - Ejercicios sobre los temas vistos durante el curso Durante estas actividades la plantilla docente revisa el trabajo de los estudiantes en la clase, supervisa las sesiones de laboratorio, responde a las preguntas en el foro del curso, mantiene tutorías semanales en el despacho y convoca tutorías con múltiples alumnos cuando lo considera oportuno.
Sistema de evaluación
  • Peso porcentual del Examen Final 0
  • Peso porcentual del resto de la evaluación 100
Calendario de Evaluación Continua
Bibliografía básica
  • Tom White. Hadoop : the definitive guide. O'Reilly. 2009
  • George F. Coulouris. Distributed systems : concepts and design. Addison-Wesley. 2005
Recursos electrónicosRecursos Electrónicos *
(*) El acceso a algunos recursos electrónicos puede estar restringido a los miembros de la comunidad universitaria mediante su validación en campus global. Si esta fuera de la Universidad, establezca una VPN


El programa de la asignatura podría sufrir alguna variación por causa de fuerza mayor debidamente justificada o por eventos académicos comunicados con antelación.


Dirección web para más información: https://gitlab.gast.it.uc3m.es/distributed-computing-assignements