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.

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
Galeria de Imagenes
Imagenes de las pantallas del sistema.


