SubastApp - Arquitectura del Sistema
ποΈ VisiΓ³n General de la Arquitectura
SubastApp es una aplicaciΓ³n de subastas en tiempo real que utiliza una arquitectura de microservicios containerizada con comunicaciΓ³n en tiempo real mediante WebSockets.
π Diagrama de Arquitectura
π³ Arquitectura de Contenedores
La aplicaciΓ³n utiliza Docker Compose para orquestar los siguientes servicios:
- mysql: Base de datos MySQL 8.0
- backend: API Node.js con Socket.IO
- nginx: Proxy reverso y servidor web
π§ Componentes del Sistema
1. Frontend (React + TypeScript)
TecnologΓas:
- React 18.2.0
- TypeScript 5.0.2
- Vite 4.4.5 (build tool)
- Tailwind CSS 3.3.3
- Zustand 4.4.1 (state management)
- Socket.IO Client 4.7.2
2. Backend (Node.js + TypeScript)
TecnologΓas:
- Node.js 18
- TypeScript 5.9.2
- Express 5.1.0
- Socket.IO 4.8.1
- Prisma 6.14.0 (ORM)
- MySQL2 3.14.3
3. Base de Datos (MySQL)
Esquema de base de datos:
- Usuario: id, email, nombre, creditos, orden, salioDePuja, createdAt, updatedAt
- Item: id, rapidapiId, nombre, pais, equipo, posicion, subastado, precioInicial, imagen, ganadorId, createdAt, updatedAt
- Puja: id, monto, itemId, usuarioId, createdAt
- Configuracion: id, clave, valor, descripcion
- EstadoSubasta: id, subastaActiva, turnoActual, tiempoRestante, createdAt, updatedAt
4. Proxy/Web Server (Nginx)
Nginx actΓΊa como:
- Servidor de archivos estΓ‘ticos del frontend
- Proxy reverso para la API del backend
- Proxy para WebSockets de Socket.IO
π Flujo de Datos
1. AutenticaciΓ³n
Cliente β Nginx β Backend β MySQL β Respuesta JSON
2. Subasta en Tiempo Real
Cliente A β Socket.IO β Backend β MySQL β Broadcast β Cliente B, C, D...
3. Pujas
Cliente β HTTP POST β Backend β MySQL β Broadcast β Todos los clientes
π Seguridad
Configuraciones de Seguridad Implementadas:
- Docker Security: Contenedores ejecutΓ‘ndose como usuario no-root
- Network Security: Solo puertos necesarios expuestos (80, 443, 3001, 3306)
- Application Security: CORS configurado para IPs especΓficas
- Data Security: Credenciales de base de datos especΓficas
π Escalabilidad
Estrategias de Escalabilidad:
- Horizontal Scaling: Backend puede escalar horizontalmente
- Vertical Scaling: Droplet puede aumentar recursos
- Caching: Redis puede agregarse para cache
π Monitoreo y Logs
Logs Disponibles:
- Application Logs: Logs de Node.js en contenedor backend
- Infrastructure Logs: Logs de Docker Compose, Nginx, MySQL
- System Logs: Logs del sistema operativo, Docker daemon
π Deployment
Infraestructura como CΓ³digo:
- Terraform: DefiniciΓ³n de recursos Digital Ocean
- GitHub Actions: CI/CD pipeline
- Docker: ImΓ‘genes optimizadas, multi-stage builds
π MΓ©tricas y KPIs
MΓ©tricas de Rendimiento:
- Application Metrics: Tiempo de respuesta de API, conexiones WebSocket
- Infrastructure Metrics: Uso de CPU y memoria, espacio en disco
- Business Metrics: NΓΊmero de usuarios activos, pujas por minuto
ConclusiΓ³n
Esta arquitectura estΓ‘ diseΓ±ada para ser escalable, mantenible y segura, permitiendo futuras mejoras y optimizaciones segΓΊn las necesidades del negocio.