📊 Proyecto PokeQueue - Reportes Inteligentes con Azure

Generación y gestión de reportes de Pokémon con arquitectura serverless y procesamiento en la nube usando Azure Functions, FastAPI, Blob Storage y Terraform.

📊 Proyecto PokeQueue - Reportes Inteligentes con Azure

Descripción General

Este proyecto es una solución continuada a ul proyecto Generador de reportes, en el cual tuve que llevar a práctica los conceptos antes visto en clase sobre Queue Storage, Serverles y Blob Storage, ya que por el momento manejaba solo los conceptos a nivel teórico, era hora de llevarlo a la práctica y en este caso este sería la versión 2 del proyecto. El objetivo de esta asignación es extender y adaptar esta aplicación base, añadiendo nuevas funcionalidades y demostrar mi habilidad para modificar y mejorar un sistema existente que debe permanecer desplegado y funcional en Azure.


🏗 Arquitectura Utilizada

El proyecto sigue una arquitectura distribuida basada en eventos:

  1. Frontend (Next.js): Interfaz para seleccionar el tipo de Pokémon y disparar el proceso.
  2. API Backend (FastAPI): Encargada de crear registros, responder peticiones y manejar estados de los reportes.
  3. Azure Queue Storage: Cola que dispara automáticamente una Azure Function al recibir un nuevo reporte.
  4. Azure Function: Se conecta a la PokeAPI, enriquece los datos, genera el CSV y lo almacena.
  5. Azure Blob Storage: Guarda el reporte CSV para descarga pública.
  6. Azure SQL Database: Guarda el estado y la metadata de los reportes.
  7. Terraform: Gestiona y despliega toda la infraestructura sobre Azure.

🚀 Funcionalidades Implementadas

✅ Eliminación de Reportes

  • Se agregó un botón de eliminar en el frontend.
  • El backend valida la existencia del reporte, elimina el CSV en Blob Storage y luego el registro en SQL.
  • Implementa control de errores para evitar inconsistencias.

✅ Enriquecimiento del Reporte

  • La Azure Function ahora obtiene estadísticas completas de cada Pokémon: HP, Ataque, Defensa, Velocidad, etc provenientes de la PokeAPI.
  • También extrae las habilidades para poder guardarlas en un CSV.

✅ Muestreo Aleatorio

  • El usuario puede especificar un número máximo de registros (sample_size).
  • Si se define, la Azure Function usa random.sample() para limitar el tamaño del reporte de forma aleatoria y eficiente.
  • Si no se especifica entonces trae todos los registros un tipo de pokemon.

🧩 Desafíos y Soluciones

  • 🧱 Lograr que todos los componentes se comuniquen correctamente: Uno de los mayores retos fue conseguir que el frontend en Next.js, la API con FastAPI, la Azure Function y la base de datos trabajaran de forma fluida.

  • 🚀 Aprender e implementar recursos nuevos como Azure Queue y Functions: Era la primera vez que usaba Azure Queue Storage y Azure Functions en conjunto. Entender cómo se disparaban los procesos en segundo plano y generar los reportes de manera que todo quedará funcional en la nube, fue uno de los mayores retos.


📁 Repositorios de Código Fuente


🌐 Enlaces al Sistema Desplegado


📦 Tecnologías utilizadas

  • ⚛️ Next.js y Reactjs
  • 🐍 FastAPI y Python
  • ☁️ Azure Functions
  • 🗃 Azure Blob Storage
  • 🐘 Azure SQL Database
  • 📬 Azure Queue Storage
  • 🔧 Terraform
  • 🐳 Docker

Fotos del proyecto

📊 Proyecto PokeQueue - Reportes Inteligentes con Azure📊 Proyecto PokeQueue - Reportes Inteligentes con Azure📊 Proyecto PokeQueue - Reportes Inteligentes con Azure