Creación de un Pipeline de Datos y API con Caché Inteligente

Proyecto Sistemas Expertos
July, 2025
Plataforma
  • 🌐 Web
  • 🔗 Api
  • Categorías

    Solución integral de backend para migrar datos a gran escala, implementar APIs seguras y optimizadas, y desplegar todo en la nube.

    Acerca del proyecto


    Desarrollo de una solución integral de backend capaz de migrar datos a gran escala, exponerlos mediante una API segura y optimizada, y desplegar todo en un entorno productivo en la nube.
    Además, se implementa un sistema de monitoreo y una estrategia de caché con invalidación automática.


    Arquitectura Propuesta


    El diagrama representa el flujo de datos desde la migración de los datos hasta la consulta de estos a traves de una API segura, optimizada y desplegada en la nube. Utilizando servicios de Microsoft Azure.

    Flujo de Datos

    Contenido del proyecto


    Para poder realizar este proyecto se tuvieron que ir completando diferentes fases.

    🏁 Fase 1: Preparación y Migración de Datos

    En esta etapa primero se tenia que buscar un dataset que contuviera una cantidad considerable de registros y luego crear la base de datos y las tablas correspondientes en Azure SQL. Para nuestro proyecto se utilizó un dataset de Amazon Products que fué obtenido de Kaggle.
    Para hacer la migración de los datos se utiliza Azure Data Factory mediante la creación de pipelines que extraen los datos del dataset (que fue subido al Azure Blob Storage) hacia cada una de las tablas.

    🔑 Fase 2: Desarrollo de API y Autenticación

    Con los datos cargados en las tablas de la base de datos se crean varias API para interactuar con ellos, aplicando buenas prácticas de desarrollo y seguridad.
    Para desarrollar las API se utiliza FastAPI (Python) y en ciertos endpoints se requerira un token JWT, se implementa Firebase Authentication para gestionar el registro e inicio de sesión de usuarios mediante correo electronico.

    ⏲️ Fase 3: Monitoreo de Rendimiento

    Se utiliza Azure Application Insights junto con las API para capturar telemetría, trazas de solicitudes, tiempos de respuesta y posibles errores.
    Para ello se realiza múltiples request consecutivos a los endpoints para analizar y observar el comportamiento de la API en el panel de Application Insights.

    🧠 Fase 4: Implementación de Caché con Redis

    Para mejorar los tiempos de respuesta, se implementó una capa de caché, para ello se Configura y conecta una base de datos de cache con Redis.
    En esta fase se tenia que generar una key para guardar cada respuesta en Redis, teniendo dos posibles escenarios:

    1. Si la key existe, la respuesta se devuelve inmediatamente de esta.

    2. Si no existe, se consulta la base de datos, se almacena la respuesta en Redis usando la key dinámica y luego se devuelve la respuesta al usuario.

    🧹 Fase 5: Invalidación de Caché

    En esta parte se plantea el problema de que al ingresar nuevos datos, los datos originales cambiarian y dejarían el caché obsoleto, por tanto el caché generado debia ser 'inteligente'.
    Para ello se crea una función que cada vez que se agregaba un nuevo registro esta eliminaba la key específica en Redis que estaba relacionada a cada categoría.

    🚀 Fase 6: Despliegue en la Nube con Docker

    La última fase... La aplicación debia ser empaquetada y desplegada para funcionar en un entorno de nube real de forma independiente.
    Para ello se creó un Dockerfile con todas las dependencias y configuraciones necesarias para que pudiera ejecutarse de forma aislada y la imagen de Docker se publico en el Azure Container Registry y se terminó con el despliegue del contenedor usando Azure App Service.

    🔐 Fase Extra: Integrar Key Vault

    Se integró Azure Key Vault para gestionar de forma segura secretos sensibles como cadenas de conexión, claves de acceso a servicios y credenciales. Durante esta fase se modificó la configuración de la aplicación para recuperar estos valores directamente desde Key Vault, aumentando así la seguridad y facilitando la gestión centralizada de secretos, especialmente en entornos de despliegue continuo.


    Técnologias utilizadas


    Backend
    Azure App Service Plans Azure App Service Plans
    Azure App Service Azure App Service
    Base de Datos
    Azure SQL Server Azure SQL Server
    Azure SQL Database Azure SQL Database
    Azure Cache for Redis Azure Cache for Redis
    Monitoreo
    Application Insights Application Insights
    Infraestructura y Administración
    Azure Resource Group Azure Resource Group
    Terraform Terraform
    Integración y Automatización
    Azure Data Factory Azure Data Factory
    Almacenamiento y Contenedores
    Azure Container Registry Azure Container Registry
    Azure Blob Storage Azure Blob Storage
    Docker Docker
    Identidad y Seguridad
    Firebase Authentication Firebase Authentication
    Azure Key Vault Azure Key Vault

    Galeria de Imagenes


    Imagenes de las pantallas del sistema.