# Resumen de competencias PEI2 - 2025-2026
## Resumen de Contenidos
Este documento resume las competencias que los estudiantes deben haber adquirido durante las sesiones S9 a S12 para el examen PEI2. Las competencias se organizan por sesión, incluyendo tanto habilidades prácticas como contenidos técnicos específicos.
### S9: Platform as a Service (PaaS), Cloud Run Functions y Pub/Sub
https://aso-git.github.io/S9/index.html
Materiales en: S9/
#### Competencias Adquiridas:
- **Fundamentos de PaaS**: Comprensión del modelo Platform as a Service (PaaS) y sus ventajas frente a IaaS (Infrastructure as a Service) y SaaS (Software as a Service)
- **Cloud Run Functions**: Desarrollo y despliegue de funciones serverless utilizando Cloud Run Functions (Gen 2), incluyendo HTTP triggers y Event triggers
- **Functions Framework**: Desarrollo local de funciones utilizando Functions Framework para testing y debugging antes del despliegue
- **Pub/Sub básico**: Creación y gestión de topics y subscriptions en Google Cloud Pub/Sub para mensajería asíncrona
- **Arquitectura event-driven**: Integración de Cloud Run Functions con Pub/Sub para implementar sistemas distribuidos asíncronos
- **Métodos de despliegue**: Despliegue de funciones mediante Console de GCP, gcloud CLI y Terraform (Infrastructure as Code)
- **CloudEvents**: Procesamiento de eventos en formato CloudEvents estándar para integración con servicios GCP
#### Contenidos Técnicos:
- Conceptos de PaaS: abstracción de infraestructura, escalado automático, modelo de pago por uso
- Cloud Run Functions: arquitectura serverless, runtime y lifecycle de funciones, cold starts y optimización
- Triggers HTTP: uso de `@functions_framework.http` para funciones que responden a peticiones HTTP
- Triggers de eventos: uso de `@functions_framework.cloud_event` para procesar eventos de Cloud Storage y Pub/Sub
- Pub/Sub: topics, subscriptions, mensajes, atributos, modelos pull vs push
- Integración Cloud Storage: procesamiento de archivos subidos mediante Event triggers
- Terraform para Cloud Functions: recursos `google_cloudfunctions2_function` y configuración de triggers
- Mejores prácticas: gestión de secretos, optimización de costos, observabilidad y logging
### S10: Proyectos Prácticos con Cloud Functions y Pub/Sub
Materiales en: S10/
https://aso-git.github.io/
#### Competencias Adquiridas:
- **Procesamiento de archivos**: Implementación de Cloud Run Functions que procesan archivos CSV subidos a Cloud Storage
- **Integración con servicios GCP**: Uso de clientes de Google Cloud Storage desde funciones serverless
- **Pub/Sub avanzado**: Publicación y consumo de mensajes Pub/Sub desde Cloud Run Functions
- **Arquitecturas asíncronas**: Diseño de sistemas que procesan eventos de forma asíncrona mediante Pub/Sub
#### Contenidos Técnicos:
- Procesamiento de eventos Cloud Storage: extracción de metadata de eventos, lectura de archivos desde buckets
- Cliente de Cloud Storage: uso de `google.cloud.storage` para operaciones de lectura y escritura
- Publicación de mensajes Pub/Sub: uso de `google.cloud.pubsub_v1` para publicar mensajes a topics
- Consumo de mensajes Pub/Sub: procesamiento de mensajes recibidos mediante CloudEvents desde Pub/Sub
- Transformación de datos: procesamiento de CSV, generación de resúmenes y almacenamiento de resultados
- Testing local: uso de Functions Framework para probar funciones antes del despliegue
### S11: Fundamentos de Docker y Desarrollo Local
Materiales en: S11/
https://hackmd.io/@ogarcia/flask-sql-alchemist
https://hackmd.io/@ogarcia/s11-docker-y-compose
https://aso-git.github.io/
#### Competencias Adquiridas:
- **Conceptos de contenedores**: Comprensión de la diferencia entre contenedores y máquinas virtuales, arquitectura de Docker
- **Gestión de imágenes y contenedores**: Comandos básicos de Docker para gestión de imágenes (`docker image ls/rm/pull/inspect`), contenedores (`docker container ls/stop/start/exec/rm`) y volúmenes (`docker volume create/ls/rm`)
- **Dockerfiles**: Construcción de imágenes personalizadas mediante Dockerfiles, siguiendo mejores prácticas (orden de capas, cache, multi-stage builds)
- **DevContainers**: Configuración de entornos de desarrollo reproducibles utilizando DevContainers en VS Code/Cursor
- **Docker Compose**: Creación y gestión de aplicaciones multi-contenedor utilizando Docker Compose, definición de servicios, volúmenes y redes
- **Integración con bases de datos**: Configuración de aplicaciones Flask con PostgreSQL utilizando Docker Compose
- **Gestión de secretos**: Uso seguro de variables de entorno y archivos `.env` para credenciales, evitando hardcodear secretos en código o imágenes
#### Contenidos Técnicos:
- Arquitectura de Docker: imágenes, contenedores, registros, capas y union filesystem
- Comandos Docker: formato nuevo (`docker image`, `docker container`) vs formato legacy, gestión de recursos
- Volúmenes: tipos de volúmenes (named volumes, bind mounts), persistencia de datos, compartir archivos entre host y contenedor
- Publicación de puertos: formato `-p host:container`, `EXPOSE` en Dockerfile, acceso a servicios desde host
- Dockerfile: sintaxis de instrucciones (`FROM`, `RUN`, `COPY`, `ADD`, `WORKDIR`, `ENV`, `EXPOSE`, `CMD`, `ENTRYPOINT`), mejores prácticas
- Multi-stage builds: optimización de imágenes mediante construcción en múltiples etapas
- Docker Compose: sintaxis de `docker-compose.yml`, servicios, volúmenes, redes, variables de entorno
- PostgreSQL con Docker: configuración de bases de datos en contenedores, conexión desde aplicaciones
- SQLAlchemy básico: modelos de datos, conexión a bases de datos, operaciones CRUD básicas
### S12: Docker en CI/CD y Cloud Run
Materiales en: S12/
https://aso-git.github.io/
[Docker en CI/CD y Cloud Run](https://classroom.github.com/a/w2Tq_Rvq)
#### Competencias Adquiridas:
- **Registros de imágenes**: Publicación de imágenes Docker en Docker Hub y Artifact Registry de GCP, autenticación y gestión de tags
- **Cloud Build**: Configuración de pipelines CI/CD (Continuous Integration/Continuous Deployment) con Cloud Build para construcción y publicación automática de imágenes
- **Cloud Run**: Despliegue de aplicaciones contenedorizadas en Cloud Run, configuración de escalado, health checks y variables de entorno
- **Secret Manager**: Gestión segura de secretos y credenciales utilizando Secret Manager de GCP, integración con Cloud Run
- **Migración Docker Compose a Cloud Run**: Adaptación de aplicaciones desarrolladas localmente con Docker Compose para despliegue en Cloud Run
- **Pipelines completos**: Implementación de pipelines que integran construcción, publicación y despliegue automatizado
#### Contenidos Técnicos:
- Docker Hub: publicación manual de imágenes, tags y versionado, autenticación con `docker login`
- Artifact Registry: creación de repositorios Docker, autenticación con `gcloud auth configure-docker`, formato de nombres de imágenes
- Cloud Build: configuración mediante `cloudbuild.yaml`, triggers automáticos, substitutions y variables
- Cloud Run: recursos `google_cloud_run_service`, configuración de contenedores, escalado automático (min/max instances), concurrency
- Health checks: configuración de endpoints de salud, readiness y liveness probes
- Secret Manager: creación y gestión de secretos, acceso desde Cloud Run mediante variables de entorno
- IAM (Identity and Access Management): permisos necesarios para Cloud Build, Cloud Run y Secret Manager
- Migración de Docker Compose: adaptación de servicios, volúmenes y redes para Cloud Run, uso de Cloud SQL para bases de datos
- Variables de entorno: configuración de variables en Cloud Run, uso de secretos como variables de entorno