Skip to content

simon-ramirez28/simple_devops_workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple DevOps Workflow - Tutorial

Este proyecto es una guía práctica y educativa diseñada para entender los conceptos fundamentales del flujo de trabajo DevOps. Implementa un servicio simple de consulta del clima usando FastAPI y demuestra cómo containerizar una aplicación con Docker.

Sigue los commits que se hacen acá para entender el flujo de trabajo

Descripción de la Aplicación

Es un servicio REST API construido con FastAPI que permite consultar el clima actual de cualquier ciudad del mundo utilizando la API de OpenWeatherMap.

Endpoints disponibles:

  • GET /health - Verifica el estado de la aplicación (health check)
  • GET /weather/{city} - Retorna los datos del clima de la ciudad especificada

Estructura del Proyecto y Propósito de cada Archivo

main.py

Es el corazón de la aplicación. Contiene:

  • La definición de la aplicación FastAPI con su configuración
  • La carga de variables de entorno usando python-dotenv
  • El endpoint /health para monitoreo y verificación de disponibilidad
  • El endpoint /weather/{city} que consulta la API externa de OpenWeatherMap y retorna los datos del clima

-> Define la lógica de negocio y la exposición de los servicios web.

requirements.txt

Lista las dependencias de Python necesarias para ejecutar la aplicación:

  • fastapi - El framework web para construir la API
  • uvicorn - El servidor ASGI para ejecutar la aplicación
  • requests - Cliente HTTP para consumir la API de clima
  • python-dotenv - Para cargar variables de entorno desde el archivo .env

-> Permite la reproducibilidad del entorno: cualquier persona puede instalar las dependencias exactas con pip install -r requirements.txt. Es una práctica estándar en Python y fundamental para el despliegue automatizado.

Dockerfile

Define cómo construir la imagen de Docker de la aplicación. Cada instrucción cumple un propósito:

  1. FROM python:3.11-slim - Usa una imagen base ligera de Python para reducir el tamaño de la imagen final
  2. WORKDIR /app - Establece el directorio de trabajo dentro del contenedor
  3. COPY requirements.txt . - Copia primero las dependencias (aprovecha el caché de capas de Docker)
  4. RUN pip install --no-cache-dir -r requirements.txt - Instala las dependencias sin caché para reducir tamaño
  5. COPY . . - Copia el código fuente al contenedor
  6. EXPOSE 8000 - Documenta que la aplicación usa el puerto 8000
  7. CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] - Define el comando por defecto para ejecutar la app

-> Es la base de la containerización. Permite empaquetar la aplicación con todas sus dependencias en un contenedor portable, asegurando que funcione igual en desarrollo, pruebas y producción (el concepto "Build once, run anywhere" de DevOps).

.gitignore

-> Lista archivos y directorios que Git debe ignorar (como .env, .venv/, __pycache__/).

Paso a Paso: Cómo Descargar y Ejecutar

Prerrequisitos

  • Git instalado
  • Python 3.11+ (si vas a ejecutar sin Docker)
  • Docker (si vas a ejecutar con contenedor)

1. Clonar el Repositorio

git clone https://github.com/tu-usuario/simple_devops_workflow.git
cd simple_devops_workflow

2. Configurar Variables de Entorno

Crea un archivo .env en la raíz del proyecto:

echo "OPENWEATHER_API_KEY=tu_api_key_aqui" > .env

Para obtener una API key gratuita, regístrate en OpenWeatherMap.

Esta página es únicamente de prueba, y ofrece claves API gratuitas de por vida.

3. Ejecución Local (Sin Docker)

Crea y activa un entorno virtual, luego instala las dependencias:

python -m venv .venv
source .venv/bin/activate  # En Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000

La aplicación estará disponible en http://localhost:8000.

4. Ejecución con Docker (Recomendado)

Construye la imagen de Docker:

docker build -t simple-devops-app .

Ejecuta el contenedor:

docker run -p 8000:8000 --env-file .env simple-devops-app

5. Probar la Aplicación

Verifica que la aplicación está funcionando:

curl http://localhost:8000/health

Consulta el clima de una ciudad:

curl http://localhost:8000/weather/London

También puedes usar la documentación interactiva de FastAPI en http://localhost:8000/docs.

Conceptos DevOps Ilustrados en este Proyecto

Concepto Dónde se ve
Containerización Dockerfile define el empaquetado de la app
Infrastructure as Code El Dockerfile es código que define la infraestructura
Health Checks Endpoint /health para monitoreo
Environment Variables Uso de .env para configuración externa
Dependency Management requirements.txt lista las dependencias
Reproducibilidad Cualquier persona puede clonar y ejecutar la app

Flujo de Trabajo DevOps Típico con este Proyecto

  1. Desarrollo: Modificas main.py localmente
  2. Commit: Guardas cambios con Git
  3. Build: docker build crea la imagen
  4. Test: Verificas con curl /health y /weather
  5. Deploy: Subes la imagen a un registro (Docker Hub, ECR, etc.)
  6. Run: Ejecutas el contenedor en producción

About

Un proyecto básico para entender DevOps

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors