Laboratorio de datos e IA
Data SciencePythonCloudDockerGCPRedisLocustSecurity

Cloud & Data Intelligence Lab

Deployment Date
Repository

Resumen Ejecutivo

El Cloud & Data Intelligence Lab es un repositorio integrador y multifacético enfocado en el diseño, despliegue, seguridad y análisis de rendimiento de microservicios e infraestructura en la nube. Abarca desde la creación de clasificadores de nubes con Machine Learning (Python), la contenedorización de aplicaciones inteligentes de chat (Ollama + Flask en Docker), hasta la implementación de APIs altamente seguras con tokens JWT y persistencia/caching de baja latencia con Redis y Google Cloud Platform (GCP). Finalmente, el laboratorio valida de manera rigurosa la resiliencia y el comportamiento del sistema mediante un exhaustivo framework de pruebas de carga dinámica utilizando Locust.


Situación

La transición de arquitecturas locales y monolíticas hacia ecosistemas distribuidos en la nube plantea desafíos críticos. En el desarrollo moderno, no basta con migrar código existente (enfoque Cloud-Enabled); se requiere diseñar pensando en la nube (Cloud-Native) para explotar el escalamiento dinámico, aislar fallos y optimizar la persistencia. Los desarrolladores enfrentan problemas complejos como:

  • Cuellos de botella en bases de datos tradicionales ante accesos concurrentes.
  • Gestión insegura de sesiones y tokens en APIs REST.
  • Saturación e inestabilidad de servidores bajo picos abruptos de tráfico (spikes).
  • Ausencia de métricas de referencia (baselines) para realizar optimizaciones en infraestructura contenerizada.

Objetivo

Diseñar, construir e instrumentar una plataforma de servicios distribuidos bajo estándares de alta disponibilidad. Los objetivos principales fueron:

  1. Desarrollar un clasificador predictivo de variables climáticas/nubes y teorizar sobre arquitecturas cloud.
  2. Implementar un backend en Flask, encapsulado en Docker, que integre modelos locales de Inteligencia Artificial (Ollama LLM).
  3. Asegurar los endpoints del ecosistema mediante esquemas de autenticación JWT y optimizar el almacenamiento de tokens usando Redis.
  4. Desplegar servicios en Google Cloud Platform (GCP) para el almacenamiento de archivos masivos (Cloud Storage Buckets) con interfaces nativas en Java y Python.
  5. Ejecutar un conjunto exhaustivo de pruebas de carga con Locust para analizar perfiles de estrés del sistema.

Arquitectura y Desarrollo

El laboratorio está segmentado en módulos progresivos que demuestran la evolución de la infraestructura:

1. ML Aplicado y Análisis de Arquitecturas

  • Clasificador de Nubes: Un script de machine learning en Python (cloud_classifier.py) que clasifica patrones visuales e hidrométricos.
  • Ensayo Cloud-Native vs Cloud-Enabled: Un análisis técnico plasmado en miniensayo1.html detallando la migración del modelo de Netflix a AWS y las ventajas de los microservicios orquestados sobre los esquemas monolíticos heredados.

2. Contenedorización de IA (Docker + Flask + Ollama)

  • Chat Inteligente: Creación de una aplicación interactiva que sirve modelos de lenguaje locales (Ollama) mediante un backend REST en Flask.
  • Aislamiento en Docker: Configuración y empaquetamiento del servicio en contenedores independientes (Dockerfile) para garantizar portabilidad absoluta y fácil orquestación.

3. Backend Blindado y Seguridad de Accesos

  • JWT Authentication: Diseño de flujos robustos de registro y verificación de sesiones mediante tokens web en Flask (app.py).
  • Aceleración con Redis: Integración de una base de datos en memoria para la lista de denegación y expiración programada de tokens JWT en token_redis.py, mitigando latencia y reduciendo impactos en la base de datos relacional principal.

4. Integración GCP y Clientes Multiplataforma

  • Google Cloud Storage (Buckets): Endpoints dedicados para cargar y listar imágenes de forma estructurada en un bucket de GCP (bucket.py), registrando los metadatos URL en bases de datos PostgreSQL/MariaDB y documentando el comportamiento mediante Swagger.
  • Clientes GUI: Aplicaciones nativas de escritorio desarrolladas en Python con Tkinter (pgui.py) y Java con Swing (JGui.java) diseñadas para consumir y renderizar la información de los microservicios en GCP.

Modulos Especiales del Lab

1. Benchmarking: Redis vs MariaDB

Un estudio comparativo directo (redisvsmaria.py) que ejecuta transacciones masivas de lectura y escritura. Los resultados demuestran la diferencia en tiempos de respuesta (sub-milisegundos en Redis frente a la latencia de disco en MariaDB), validando la conveniencia de usar Redis como caché distribuida intermedia.

2. Suite Completa de Pruebas de Carga (Locust)

Una robusta suite de telemetría y pruebas de estrés implementada mediante locustfile.py que incluye perfiles avanzados de comportamiento de carga:

  • Baseline Test (baseline.py): Establece el rendimiento base (50 usuarios durante 5 minutos) evaluando uso de CPU y memoria de los contenedores Docker en reposo relativo.
  • Smoke Test (smoke.py): Valida la disponibilidad inmediata y descarta fallos críticos de configuración de red o puertos expuestos tras reinicios.
  • Read-Heavy vs Write-Heavy: Comportamiento asimétrico del sistema ante avalanchas de peticiones GET frente a peticiones de escritura POST, permitiendo identificar límites en el gestor de base de datos.
  • Ramp-Up / Ramp-Down: Simulación de curvas de entrada y salida progresiva de usuarios para el ajuste óptimo de políticas de autoescalado.
  • Spike Test: Incrementos súbitos (ej. de 200 a 1000 usuarios en 10 segundos) simulando picos reales de demanda y permitiendo ajustar límites de timeout y resiliencia en Nginx.
  • Soak Test: Carga moderada y continua durante periodos prolongados (30+ minutos) diseñada específicamente para detectar fugas de memoria (memory leaks) en los hilos de Flask y conexiones huérfanas en MariaDB.

Ciclo de Vida del Despliegue y Validación

graph TD
    A[Código Local en Python/Flask] --> B[Contenedorización con Docker]
    B --> C[Despliegue de Endpoints en GCP]
    C --> D[Consumo desde Clientes Java & Python GUI]
    D --> E[Pruebas de Carga Dinámicas con Locust]
    E --> F{¿Supera el Baseline?}
    F -- Sí --> G[Producción Optimizada]
    F -- No --> H[Análisis de Logs e Índices en Redis/MariaDB]
    H --> B

Stack Tecnológico Completo

Capa Tecnologías
Modelos de ML & IA Python (scikit-learn, Jupyter Notebooks), Ollama LLM
Backend & Microservicios Flask, Python 3.11, Docker, Swagger / OpenAPI
Persistencia & Cache Redis (Caché de tokens y latencia ultra-baja), MariaDB, PostgreSQL
Infraestructura Cloud Google Cloud Platform (GCP Cloud Storage Buckets, Compute Engine)
Pruebas de Rendimiento Locust, scripts feeder JSON/CSV para credenciales de usuarios únicos
Interfaces de Usuario HTML5 / CSS3 / JavaScript (PrimeFlex), Python Tkinter, Java Swing

Resultados y Logros

  • Seguridad Garantizada: Implementación exitosa de autenticación JWT blindada con revocación inmediata y persistente gracias a la base de datos de Redis en memoria.
  • Análisis de Capacidad Real: Identificación y resolución de memory leaks en contenedores Docker mediante perfiles prolongados de Soak testing.
  • Estudio de Latencia DBMS: Verificación empírica de una mejora de hasta 10x en los tiempos de verificación de accesos con Redis en comparación con consultas directas a tablas MariaDB.
  • Almacenamiento Escalable: Gestión eficiente de archivos multimedia mediante URLs seguras en GCP Buckets, minimizando la sobrecarga de transacciones binarias en la base de datos relacional.
  • Clientes Multiplataforma: Interfaces eficientes de escritorio y web que interactúan fluidamente con la nube pública sin exponer credenciales críticas.

Classified Evidence

VISUAL REPORTS