- ES Español

- EN English

5.63. Cloud Computing (Obligatorio)
- Semestre: 10mo Sem. Créditos: 3
- Horas del curso: Teoría: 1 horas; Práctica: 2 horas; Laboratorio: 2 horas;
- Sílabo:
- htmlonly

Español

English - Prerrequisitos:
- CS370 Big Data (9no Sem) itemize
5.63.1. Justificación ↑ Volver arriba
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 ↑ Volver arriba
- Comprender la arquitectura y los modelos de despliegue de la computación en la nube.
- Diseñar soluciones de bases de datos distribuidas considerando consistencia y disponibilidad.
- Desarrollar aplicaciones utilizando plataformas y frameworks web modernos basados en la nube.
- Analizar las implicaciones de seguridad y privacidad en los servicios distribuidos y en la nube.
5.63.3. Contribución a los resultados (Outcomes) ↑ Volver arriba
- 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 ↑ Volver arriba
5.63.4.1. Arquitectura Cloud y Gestión de Datos (12 horas) [Habilidades AG-C09,AG-C11] ↑ Volver arriba
Referencias Bibliográficas: (Marinescu, 2022; Buyya et al., 2013)
Temas
- Plataformas, frameworks o meta-frameworks web
- Servicios en la nube
- API, Componentes Web (Web Components) enumerate
- Servicios de computación Sistemas NoSQL
- Alojamiento en la Nube (Cloud Hosting)
- Escalabilidad (por ejemplo, Autoescalado (Autoscaling), Clústeres)
- Estimación de costos para servicios enumerate
- Arquitectura
- Monolitos vs Microservicios
- Micro-frontends
- Arquitecturas Dirigidas por Eventos (Event-Driven) vs RESTful: ventajas y desventajas
- Sin servidor (Serverless), computación en la nube bajo demanda enumerate
Aprendizaje esperado (Learning Outcomes)
- Diseñar e implementar una aplicación basada en web utilizando un diseño de arquitectura de microservicios [Diseñar]
- 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] ↑ Volver arriba
Referencias Bibliográficas: (Buyya et al., 2013)
Temas
- Bases de datos distribuidas/sistemas basados en la nube
Aprendizaje esperado (Learning Outcomes)
- Describir los componentes clave de un DBMS distribuido, incluyendo almacenamiento de datos distribuido, procesamiento de consultas y gestión de transacciones [Describir]
- Analizar las ventajas y desventajas entre arquitecturas de DBMS paralelo: memoria compartida, disco compartido y nada compartido [Analizar]
- 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] ↑ Volver arriba
Referencias Bibliográficas: (Marinescu, 2022)
Temas
- Seguridad (safety) y vivacidad (liveness):
- Condiciones de carrera (race conditions)
- Dependencias/precondiciones
- Modelos de fallos (fault models)
- Terminación enumerate
- Modelos de programación:
- Modelo de actores (actor models)
- Modelos procedurales y reactivos
- Modelos de programación síncrona/asíncrona
- Paralelismo de datos (data parallelism) enumerate
- Propiedades:
- Propiedades basadas en orden:
- Conmutatividad
- Independencia enumerate
- Propiedades basadas en consistencia:
- Atomicidad
- Consenso enumerate enumerate
- Control de ejecución:
- Espera asíncrona Async await
- Promesas (promises)
- Hilos (threads) enumerate
- Comunicación y coordinación:
- Mutexes
- Paso de mensajes (message-passing)
- Memoria compartida (shared memory)
- Cobegin-coend
- Monitores
- Canales (channels)
- Hilos (threads)
- Guardas (guards) enumerate
- Futuros (futures)
- Soporte del lenguaje para paralelismo de datos como forall, desenrollado de bucles (loop unrolling), map/reduce
- Efecto de los modelos de consistencia de memoria en la semántica del lenguaje y la generación correcta de código
- Interfaces de Programación de Aplicaciones de Transferencia de Estado Representacional (REST APIs)
- Tecnologías y enfoques: computación en la nube (cloud computing), computación de alto rendimiento, computación cuántica, computación ubicua
- Sobrecarga del paso de mensajes
- Granularidad del programa para una explotación eficiente de la concurrencia
- Concurrencia y otros paradigmas de programación (por ejemplo, funcional)
Aprendizaje esperado (Learning Outcomes)
- 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]
- 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]
- Usar un modelo de paso de mensajes para analizar un protocolo de comunicación [Usar]
- Usar construcciones de sincronización como métodos monitorizados/sincronizados en un programa simple [Usar]
- Modelar dependencia de datos usando construcciones de programación simples que involucran variables, lectura y escritura [Implementar]
- Modelar dependencia de control usando construcciones simples como selección e iteración [Implementar]
- Explicar cómo las APIs REST integran aplicaciones y automatizan procesos [Explicar]
- 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] ↑ Volver arriba
Referencias Bibliográficas: (Marinescu, 2022)
Temas
- Paradigmas de aplicaciones distribuidas (por ejemplo, cliente/servidor, peer-to-peer, nube, edge y fog). Ver también: Comunicación , Coordinación
Aprendizaje esperado (Learning Outcomes)
- Definir los principios de denominación, direccionamiento y localización de recursos [Definir]
- Analizar las necesidades de demandas específicas de aplicaciones en red [Analizar]
- Describir los detalles de un protocolo de capa de aplicación [Describir]
- 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] ↑ Volver arriba
Referencias Bibliográficas: (Marinescu, 2022)
Temas
- 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).
- 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.
- 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.
- 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.
- 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).
- 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.
- 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. enumerate
Aprendizaje esperado (Learning Outcomes)
- 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]
- Mejorar el rendimiento de un componente secuencial introduciendo paralelismo y/o distribución [Crear]
- 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] ↑ Volver arriba
Referencias Bibliográficas: (Marinescu, 2022)
Temas
- Aplicaciones de una mentalidad de seguridad: web, nube y dispositivos móviles Diseño del Sistema , Aspectos Comunes: Plataformas, APIs y Restricciones , Aspectos Comunes: Lenguajes de Plataforma y Patrones Web .
- 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)
- Analizar los riesgos de seguridad asociados con aplicaciones en la nube distribuidas [Usar].
- Evaluar las implicaciones de privacidad del almacenamiento de datos en entornos de nube multiinquilino [Evaluar].
5.63.5. Referencias Bibliográficas ↑ Volver arriba
Marinescu, D. C. (2022). Cloud Computing: Theory and Practice. Morgan Kaufmann, 3rd edition.
Buyya, R., Vecchiola, C., and Selvi, S. T. (2013). Mastering Cloud Computing: Foundations and Applications Programming. Morgan Kaufmann, 1st edition.