5.63. CS3P2. Cloud Computing (Obligatorio)
- Semestre: 10mo Sem. Créditos: 3
- Horas del curso: Teoría: 1 horas; Práctica: 2 horas; Laboratorio: 2 horas;
-
Prerrequisitos:
- CS370. Big Data (9no Sem)
5.63.1. Justificación
La computación moderna depende en gran medida de arquitecturas distribuidas y plataformas nativas de la nube. Este curso proporciona una exploración en profundidad de los servicios de computación en la nube, conceptos de bases de datos distribuidas y plataformas web. Los estudiantes aprenderán a diseñar arquitecturas escalables, comprender las implicaciones de la consistencia de datos distribuidos y evaluar los desafíos de privacidad y seguridad inherentes a los entornos basados en la nube.
5.63.2. Objetivos Generales
- 1.
- Comprender la arquitectura y los modelos de despliegue de la computación en la nube.
- 2.
- Diseñar soluciones de bases de datos distribuidas considerando consistencia y disponibilidad.
- 3.
- Desarrollar aplicaciones utilizando plataformas y frameworks web modernos basados en la nube.
- 4.
- Analizar las implicaciones de seguridad y privacidad en los servicios distribuidos y en la nube.
5.63.3. Contribución a los resultados (Outcomes)
-
AG-C11) Uso de Herramientas: Aplica herramientas modernas de computación en la resolución de problemas. (Usage)
-
AG-C09) Diseño y Desarrollo de Soluciones: Diseña, implementa y evalúa soluciones para problemas complejos de computación. (Usage)
5.63.4. Contenido
5.63.4.1. Arquitectura Cloud y Gestión de Datos (12 horas) [Habilidades AG-C09,AG-C11]
Referencias Bibliográficas: [Marinescu, 2022, Buyya et al., 2013]
Temas
- 1.
- Plataformas, frameworks o meta-frameworks web
- a)
- Servicios en la nube
- b)
- API, Componentes Web (Web Components)
- 2.
- Servicios de computación Gestión de Datos (DM) -NoSQLSystems
- a)
- Alojamiento en la Nube (Cloud Hosting)
- b)
- Escalabilidad (por ejemplo, Autoescalado (Autoscaling), Clústeres)
- c)
- Estimación de costos para servicios
- 3.
- Arquitectura
- a)
- Monolitos vs Microservicios
- b)
- Micro-frontends
- c)
- Arquitecturas Dirigidas por Eventos (Event-Driven) vs RESTful: ventajas y desventajas
- d)
- Sin servidor (Serverless), computación en la nube bajo demanda
Aprendizaje esperado (Learning Outcomes)
- 1.
- Diseñar e implementar una aplicación basada en web utilizando un diseño de arquitectura de microservicios [Diseñar]
- 2.
- Describir las restricciones, como alojamiento, servicios y escalabilidad, relacionadas con las plataformas web [Describir]
5.63.4.2. Bases de Datos Distribuidas/Computación en la Nube (10 horas) [Habilidades AG-C09,AG-C11]
Referencias Bibliográficas: [Buyya et al., 2013]
Temas
- 1.
- Bases de datos distribuidas/sistemas basados en la nube
Aprendizaje esperado (Learning Outcomes)
- 1.
- Describir los componentes clave de un DBMS distribuido, incluyendo almacenamiento de datos distribuido, procesamiento de consultas y gestión de transacciones [Describir]
- 2.
- Analizar las ventajas y desventajas entre arquitecturas de DBMS paralelo: memoria compartida, disco compartido y nada compartido [Analizar]
- 3.
- Describir estrategias de replicación de datos y modelos de consistencia débil en sistemas de bases de datos distribuidas [Describir]
5.63.4.3. Computación Paralela y Distribuida (8 horas) [Habilidades AG-C09,AG-C11]
Referencias Bibliográficas: [Marinescu, 2022]
Temas
- 1.
- Seguridad (safety) y vivacidad (liveness):
- a)
- Condiciones de carrera (race conditions)
- b)
- Dependencias/precondiciones
- c)
- Modelos de fallos (fault models)
- d)
- Terminación
- 2.
- Modelos de programación:
- a)
- Modelo de actores (actor models)
- b)
- Modelos procedurales y reactivos
- c)
- Modelos de programación síncrona/asíncrona
- d)
- Paralelismo de datos (data parallelism)
- 3.
- Propiedades:
- a)
- Propiedades basadas en orden:
- 1)
- Conmutatividad
- 2)
- Independencia
- b)
- Propiedades basadas en consistencia:
- 1)
- Atomicidad
- 2)
- Consenso
- 4.
- Control de ejecución:
- a)
- Espera asíncrona Async await
- b)
- Promesas (promises)
- c)
- Hilos (threads)
- 5.
- Comunicación y coordinación:
- a)
- Mutexes
- b)
- Paso de mensajes (message-passing)
- c)
- Memoria compartida (shared memory)
- d)
- Cobegin-coend
- e)
- Monitores
- f )
- Canales (channels)
- g)
- Hilos (threads)
- h)
- Guardas (guards)
- 6.
- Futuros (futures)
- 7.
- Soporte del lenguaje para paralelismo de datos como forall, desenrollado de bucles (loop unrolling), map/reduce
- 8.
- Efecto de los modelos de consistencia de memoria en la semántica del lenguaje y la generación correcta de código
- 9.
- Interfaces de Programación de Aplicaciones de Transferencia de Estado Representacional (REST APIs)
- 10.
- Tecnologías y enfoques: computación en la nube (cloud computing), computación de alto rendimiento, computación cuántica, computación ubicua
- 11.
- Sobrecarga del paso de mensajes
- 12.
- Granularidad del programa para una explotación eficiente de la concurrencia
- 13.
- Concurrencia y otros paradigmas de programación (por ejemplo, funcional)
Aprendizaje esperado (Learning Outcomes)
- 1.
- Explicar por qué los lenguajes de programación no garantizan la consistencia secuencial en presencia de condiciones de carrera (data races) y qué deben hacer los programadores como resultado [Explicar]
- 2.
- Implementar programas concurrentes correctos usando múltiples modelos de programación, como memoria compartida, actores, futuros, construcciones de sincronización y primitivas de paralelismo de datos [Implementar]
- 3.
- Usar un modelo de paso de mensajes para analizar un protocolo de comunicación [Usar]
- 4.
- Usar construcciones de sincronización como métodos monitorizados/sincronizados en un programa simple [Usar]
- 5.
- Modelar dependencia de datos usando construcciones de programación simples que involucran variables, lectura y escritura [Implementar]
- 6.
- Modelar dependencia de control usando construcciones simples como selección e iteración [Implementar]
- 7.
- Explicar cómo las APIs REST integran aplicaciones y automatizan procesos [Explicar]
- 8.
- Explicar beneficios, limitaciones y desafíos relacionados con la computación distribuida y paralela [Explicar]
5.63.4.4. Aplicaciones en Red (6 horas) [Habilidades AG-C09,AG-C11]
Referencias Bibliográficas: [Marinescu, 2022]
Temas
- 1.
- Paradigmas de aplicaciones distribuidas (por ejemplo, cliente/servidor, peer-to-peer, nube, edge y fog). Ver también: Computación Paralela y Distribuida (PDC) -Communication, Computación Paralela y Distribuida (PDC) -Coordination
Aprendizaje esperado (Learning Outcomes)
- 1.
- Definir los principios de denominación, direccionamiento y localización de recursos [Definir]
- 2.
- Analizar las necesidades de demandas específicas de aplicaciones en red [Analizar]
- 3.
- Describir los detalles de un protocolo de capa de aplicación [Describir]
- 4.
- Implementar una aplicación simple cliente-servidor basada en sockets [Implementar]
5.63.4.5. Algoritmos: Dominios de Aplicación (4 horas) [Habilidades AG-C09,AG-C11]
Referencias Bibliográficas: [Marinescu, 2022]
Temas
- 1.
- Panorama de dominios de aplicación comunes en multinúcleo, reactivo, datos paralelos, clúster,
nube, sistemas distribuidos abiertos y marcos de trabajo (con referencia a la siguiente
tabla).
- a)
- Multinúcleo: Agentes de ejecución típicos: Hilos. Mecanismos de comunicación típicos: Memoria compartida, Atómicos, bloqueos. Dominios algorítmicos típicos: Gestión de recursos, procesamiento de datos. Objetivos de ingeniería típicos: Rendimiento (throughput), latencia, energía.
- b)
- Reactivo: Agentes de ejecución típicos: Manejadores, hilos. Mecanismos de comunicación típicos: Canales de E/S. Dominios algorítmicos típicos: Servicios, tiempo real. Objetivos de ingeniería típicos: Latencia.
- c)
- Datos paralelos: Agentes de ejecución típicos: GPU, SIMD, aceleradores, híbridos. Mecanismos de comunicación típicos: Memoria heterogénea. Dominios algorítmicos típicos: álgebra lineal, gráficos, análisis de datos. Objetivos de ingeniería típicos: Rendimiento (throughput), energía.
- d)
- Clúster: Agentes de ejecución típicos: Hosts gestionados. Mecanismos de comunicación típicos: Sockets, canales. Dominios algorítmicos típicos: Simulación, análisis de datos. Objetivos de ingeniería típicos: Rendimiento (throughput).
- e)
- Nube: Agentes de ejecución típicos: Hosts aprovisionados. Mecanismos de comunicación típicos: APIs de servicio. Dominios algorítmicos típicos: Aplicaciones web. Objetivos de ingeniería típicos: Escalabilidad.
- f )
- Distribuido abierto: Agentes de ejecución típicos: Hosts autónomos. Mecanismos de comunicación típicos: Sockets, Almacenes de datos. Dominios algorítmicos típicos: Almacenes de datos y servicios tolerantes a fallos. Objetivos de ingeniería típicos: Confiabilidad.
Aprendizaje esperado (Learning Outcomes)
- 1.
- Extender un programa secuencial dirigido por eventos estableciendo una nueva actividad en un manejador de eventos (por ejemplo, un nuevo hilo en un manejador de acciones de GUI) [Diseñar]
- 2.
- Mejorar el rendimiento de un componente secuencial introduciendo paralelismo y/o distribución [Crear]
- 3.
- Elegir entre diferentes diseños paralelos/distribuidos para componentes de un sistema dado [Evaluar (valorar)]
5.63.4.6. Principios y Mentalidad de Seguridad (8 horas) [Habilidades AG-C09,AG-C11]
Referencias Bibliográficas: [Marinescu, 2022]
Temas
- 1.
- Aplicaciones de una mentalidad de seguridad: web, nube y dispositivos móviles Fundamentos de Sistemas (SF) -Design,SPD-CommonAspectsSharedConcerns.
- 2.
- Implicaciones de privacidad de la recopilación generalizada de datos, incluyendo pero no limitado a bases de datos transaccionales, almacenes de datos, sistemas de vigilancia, computación en la nube e inteligencia artificial.
Aprendizaje esperado (Learning Outcomes)
- 1.
- Analizar los riesgos de seguridad asociados con aplicaciones en la nube distribuidas [Usar].
- 2.
- Evaluar las implicaciones de privacidad del almacenamiento de datos en entornos de nube multiinquilino [Evaluar].