Curricula CS-UNI
5.63. CS3P2. Cloud Computing (Obligatorio)

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)

Figura 5.63: Mapa de Conexión. CS3P2 Cloud Computing

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, 2022Buyya 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].

5.63.5. Referencias Bibliográficas

[Marinescu, 2022]

[Buyya et al., 2013]

¿Encontraste una errata, un curso desactualizado, un enlace roto, o tienes una sugerencia? Cuéntanos.

Escanea para abrir en tu teléfono