Proyecto de orquestacion de contenedores con Docker Swarm para la empresa de comercio electronico TechRetail. Implementado como actividad practica de la asignatura de Infraestructura de Tecnologias de la Informacion.
TechRetail es una empresa peruana de e-commerce que migrо su infraestructura a una arquitectura de microservicios contenerizada usando Docker Swarm, logrando alta disponibilidad, escalado horizontal y balanceo de carga automatico.
El sistema resuelve los problemas originales de la empresa:
- Caidas frecuentes del sistema en horas pico
- Tiempos de respuesta lentos (mas de 8 segundos por peticion)
- Perdidas de S/. 15,000 por hora de inactividad
- Imposibilidad de escalar ante la demanda
+---------------------------------------------------------+
| DOCKER SWARM CLUSTER |
| |
| +-----------+ +-----------+ +-----------+ |
| | Manager | | Worker 1 | | Worker 2 | |
| | Node | | Node | | Node | |
| +-----+-----+ +-----+-----+ +-----+-----+ |
| | | | |
| +-----v---------------v---------------v------+ |
| | Red Overlay (techretail_net) | |
| +------+----------+----------+----------+----+ |
| | | | | |
| [frontend] [backend] [database] [redis] |
| 3 replicas 2 replicas 1 replica 1 replica |
+---------------------------------------------------------+
| Servicio | Imagen | Replicas | Puerto |
|---|---|---|---|
| frontend | nginx:alpine | 3 | 80 |
| backend | node:18-alpine | 2 | 3000 |
| database | mysql:8 | 1 | 3306 |
| cache | redis:7-alpine | 1 | 6379 |
| visualizer | dockersamples/visualizer | 1 | 8080 |
- Docker Engine instalado en los nodos
- Acceso a iximiuz Labs (labs.iximiuz.com/playgrounds/docker-swarm) o 3 maquinas/VMs con Docker
Nota: La plataforma Play with Docker recomendada originalmente fue discontinuada en marzo de 2026. Se recomienda usar iximiuz Labs como alternativa gratuita que provee un cluster de 3 nodos preconfigurado.
docker swarm init --advertise-addr <IP_MANAGER># Obtener el token en el Manager
docker swarm join-token worker
# Ejecutar en cada nodo worker
docker swarm join --token <TOKEN> <IP_MANAGER>:2377docker node lsecho "MiPasswordSegura123" | docker secret create db_password -docker stack deploy -c docker-compose.yml techretaildocker stack services techretaildocker service scale techretail_frontend=5docker service logs techretail_backend# Ver todos los nodos
docker node ls
# Ver servicios del stack
docker stack services techretail
# Ver replicas del frontend
docker service ps techretail_frontend
# Ver replicas del backend
docker service ps techretail_backend
# Ver secrets creados
docker secret ls# Eliminar el stack
docker stack rm techretail
# Salir del cluster (ejecutar en cada nodo)
docker swarm leave --forcetechretail-docker-swarm/
|
+-- docker-compose.yml # Configuracion del stack completo
+-- README.md # Este archivo
- Las credenciales de base de datos se gestionan con Docker Secrets (nunca en texto plano).
- La contrasena no esta hardcodeada en el docker-compose.yml.
- El secret db_password debe crearse manualmente antes del despliegue.
- La red overlay techretail_net cifra la comunicacion entre contenedores en distintos nodos.
Miguel Angel Carasas Pizarro Imer Abel Quispe Quezada
Instituto de Educacion Superior Tecnologico TECSUP Departamento de Tecnologia Digital – Diseno y Desarrollo de Software Profesor: Jaime Farfan Madariaga Lima, Peru – 2026