Servidor de Seguimiento de Precios Bursátiles en Tiempo Real con Node.js, WebSocket y Redis usando Docker Compose
¿Alguna vez has querido monitorizar los precios de tus acciones favoritas en tiempo real desde tu propio servidor? Hoy te traigo un proyecto súper útil y de moda: un seguimiento en tiempo real de precios bursátiles usando Node.js y WebSocket, optimizado con Redis y desplegado con Docker Compose. Apto para usuarios intermedios y avanzados que quieran adentrarse en la creación de servicios multi-contenedor, con visos de eficiencia y velocidad.
¿Por qué desplegar un tracker bursátil propio?
- Permite recibir precios de acciones en tiempo real (actualización instantánea) gracias a WebSocket.
- Redis se usa como caché, evitando peticiones excesivas al proveedor externo y acelerando la respuesta para usuarios concurrentes.
- Desplegable fácilmente en cualquier VPS usando Docker Compose y con potencial para ampliarlo con gráficos, alertas, o integración con bots de trading.
- Ideal para aprender sobre APIs, conectividad en tiempo real, y la gestión eficiente de recursos con cachés distribuidas.
Servicios y arquitectura del proyecto
- Node.js: Servidor web que conecta a la API de precios (requiere que configures la tuya, por ejemplo Alpha Vantage) y sirve el cliente por WebSocket.
- WebSocket: Comunicación bidireccional con el navegador. Cada vez que hay un cambio, llega al usuario sin refrescar la página.
- Redis: Almacena las últimas cotizaciones. Mejora el rendimiento y reduce uso de la API externa.
La gracia de este setup es que Node.js y Redis van en contenedores separados, comunicándose mediante la red interna de Docker. Así, el sistema es escalable y fácil de mantener.
Fichero docker-compose.yml completo
A continuación tienes el docker-compose.yml necesario para desplegar el servidor. Notarás que la app Node.js se comunica con Redis para almacenar y recuperar datos de precios en tiempo real:
version: '3.8'
services:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379:6379"
restart: always
stock-app:
build: ./stock-app
container_name: stock-app
ports:
- "3000:3000"
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- API_KEY=# tu clave para la API de cotizaciones
depends_on:
- redis
restart: unless-stopped
volumes:
- ./stock-app:/usr/src/app
# Si tu app requiere instalar dependencias extra, agrega un Dockerfile en ./stock-app
networks:
default:
name: stock-network
driver: bridge
Nota: La carpeta ./stock-app debe contener tu app Node.js y el Dockerfile para construir el contenedor. Un ejemplo mínimo del Dockerfile sería:
FROM node:20-alpine
WORKDIR /usr/src/app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["node", "index.js"]
¿Cómo funciona el sistema?
- El usuario entra al frontend en
localhost:3000. - Node.js se conecta por WebSocket y realiza consultas periódicas (o bajo demanda) a la API bursátil.
- Redis almacena los precios más recientes y permite responder de forma ultra-rápida a muchos clientes.
- Los cambios se envían en tiempo real al navegador vía WebSocket.
¡Con esto tendrás tu propio servicio para seguir acciones, con potencial para alertas, dashboard gráfico o integración móvil!
Consejos extra para el despliegue y troubleshooting
- Si la API bursátil tiene límites, ajusta la frecuencia de consultas y utiliza Redis para evitar excesos.
- En producción, protege Redis usando contraseñas y redes privadas Docker.
- Si Node.js falla al conectar a Redis, revisa las variables
REDIS_HOSTyREDIS_PORT. - Consulta los logs de ambos servicios usando
docker-compose logs stock-appydocker-compose logs redispara detectar errores. - No olvides gestionar tus claves de API: nunca las subas a repos públicos.
- Para desarrollo, puedes usar una API bursátil gratuita como Alpha Vantage; en producción busca proveedores profesionales.
