Hace poco ejecuté un proyecto que me permitió revisitar conceptos clave de CI CD, contenerización y la práctica de infraestructura como código. Más que un repaso de herramientas, fue un ejercicio de diseño de arquitectura, integración y criterio para decidir cómo y cuándo usar tecnologías modernas en un flujo real de entrega continua.
El objetivo fue construir una API en Python con Flask que devuelve frases motivacionales aleatorias, empaquetarla con Docker y orquestar su despliegue automático con GitHub Actions y Terraform hacia un proveedor cloud. Todo el pipeline se activa con cada commit en la rama main.
El resultado del pipeline incluyó tres etapas bien definidas: construcción de la imagen Docker de la aplicación, ejecución de pruebas básicas de salud y endpoints, y aprovisionamiento y despliegue en la nube con Terraform y la integración nativa del proveedor. Con esto se garantizó que cada cambio pasara por build, test y release de forma repetible y auditable.
Stack y decisiones técnicas principales: Python y Flask para una API ligera, Docker para portabilidad y consistencia de entorno, GitHub Actions para CI CD con flujos separados por responsabilidad, Terraform como IaC para declarar recursos y estados, y un proveedor cloud para el alojamiento. Este enfoque facilita escalar el servicio, migrarlo entre entornos y mantener trazabilidad de cambios.
La API expone una ruta raíz con un mensaje de bienvenida, una ruta de frase que devuelve una selección aleatoria y un manejo de error 404 consistente, todo con respuestas JSON sencillas. El contenedor se basa en una imagen ligera de Python, instala dependencias desde requirements, expone el puerto 80 y arranca el servicio con un comando único. Localmente se valida con un build y un run asignando el puerto 80 del host al contenedor.
En GitHub Actions configuré un flujo que se dispara en pull request y push sobre main. El job principal construye la imagen Docker, levanta el contenedor en segundo plano y valida rutas con curl para asegurar que la raíz, el endpoint de frase y el manejo de 404 funcionen correctamente. Al terminar, detiene el contenedor y deja el resultado listo para el siguiente paso.
Para la infraestructura, un segundo workflow se activa ante cambios en la rama infra. Ejecuta init, plan y apply de Terraform con variables sensibles inyectadas desde secretos de GitHub. El provider describe el servicio web en modo docker, el plan de capacidad, el entorno, la rama de despliegue y el repositorio fuente. Este enfoque evita cambios manuales en consola, mantiene estado versionado y acelera rollbacks si son necesarios.
Lecciones aprendidas más relevantes: la contenerización reduce drásticamente el clásico problema de funciona en mi máquina; GitHub Actions permite diseñar pipelines declarativos y modulares que escalan con el proyecto; Terraform obliga a pensar la infraestructura como parte del código, con variables, outputs y estados que documentan y automatizan cada recurso; separar la aplicación del código de infraestructura mejora la mantenibilidad y el troubleshooting.
Dificultades y cómo las abordé: repasé sintaxis y módulos de Terraform para alinear versiones y buenas prácticas, y dediqué tiempo a entender el modelo de despliegue del proveedor cloud para aprovechar sus integraciones con repositorios y ramas. La curva fue breve y el beneficio de la automatización compensa con creces.
Herramientas que aceleraron el trabajo: ChatGPT para resolver dudas puntuales y comparar enfoques, GitHub Copilot para generar esqueletos de archivos de configuración y pruebas, y Claude Sonnet 3.7 para proponer mejoras en la organización del proyecto y en la estructura del pipeline.
Conclusión y recomendaciones prácticas: construir un pipeline CI CD de extremo a extremo con Docker, GitHub Actions y Terraform es un ejercicio valioso para cualquier equipo. Te obliga a estandarizar, automatizar y documentar, y sienta bases para una evolución saludable del producto. Si estás empezando, crea una API pequeña, añade pruebas de salud y de endpoints, automatiza build y deploy y describe tu infraestructura con código. La experiencia práctica es insustituible.
En Q2BSTUDIO acompañamos a empresas a diseñar y operar pipelines robustos, integrando aplicaciones a medida y software a medida con prácticas de DevOps, automatización y observabilidad. Combinamos servicios cloud aws y azure, ia para empresas con agentes IA, ciberseguridad y pentesting, y servicios inteligencia de negocio con power bi para escalar soluciones con seguridad, eficiencia y datos accionables. Si te interesa mejorar tu arquitectura y despliegue, explora nuestros servicios cloud AWS y Azure o impulsa tu operación con automatización de procesos orientada a CI CD.
Separación de pipelines que recomiendo replicar: un pipeline CI que construye la imagen, ejecuta pruebas automatizadas y valida salud de endpoints en contenedor, y un pipeline de infraestructura que gestiona Terraform en una rama dedicada. Esta división reduce acoplamientos, acelera diagnósticos y permite evolucionar cada pieza de forma independiente sin afectar la otra.
Palabras clave para quien quiera profundizar y posicionar capacidades internas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Integrarlas de forma orgánica en tu estrategia técnica y de contenido te ayudará a comunicar valor real y a atraer proyectos alineados con tus objetivos.