🐳 Análisis de Recursos Docker (Total vs. Actual)#
☢️ Comando de Liberación Total (Un solo paso)#
Si deseas borrar todo rastro (imágenes base, volúmenes, contenedores y caché) y recuperar ~10GB de espacio:
make nuke(O directamente: docker system prune -a -f --volumes)
Este documento detalla el consumo de recursos (Disco y RAM) del proyecto Social Bot Scheduler. Se ha ajustado para reflejar la diferencia entre el estado actual de tu entorno y el potencial total del repositorio para que reclutadores y novatos tomen decisiones informadas.
🏁 Estado del Entorno Docker#
Advertencia
Tu entorno actual puede estar "incompleto" si solo has descargado algunos servicios. Para ejecutar el laboratorio completo, debes considerar el Tamaño Real Total.
🧹 Gestión de Recursos y Limpieza#
Dada la alta demanda técnica de este repositorio (múltiples bases de datos simultáneas), es vital saber cómo liberar recursos:
- Consulta el Reporte de Recursos Docker para ver el uso real de imágenes, volúmenes y caché de build.
- Usa
make cleanopython hub.py cleanpara una limpieza estándar. - Usa
docker system prune -a -f --volumespara una limpieza total (Deep Cleanup).
Este documento detalla el consumo de recursos (Disco y RAM) del proyecto Social Bot Scheduler. Se ha ajustado para reflejar la diferencia entre el estado actual de tu entorno y el potencial total del repositorio para que reclutadores y novatos tomen decisiones informadas.
🏁 Estado del Entorno Docker#
Advertencia
Tu entorno actual puede estar "incompleto" si solo has descargado algunos servicios. Para ejecutar el laboratorio completo, debes considerar el Tamaño Real Total.
| Escenario | Almacenamiento (Disco) | RAM Sugerida | Notas |
|---|---|---|---|
| Estado Parcial | Variable (~600 MB - 1 GB) | 4 GB | Solo servicios básicos o un caso individual. |
| Núcleo (9 casos) | ~8.0 GB | 16 GB | Los servicios del núcleo, sus bases de datos externas, 1 gateway con DuckDB y observabilidad. La matriz completa de 19 casos añade más motores (Kafka, ClickHouse, CockroachDB, Neo4j, TimescaleDB, etc.) — ver la tabla de RAM medida por caso más abajo. |
🏗️ Desglose Exhaustivo de Almacenamiento (Potential)#
Si decides hacer un docker-compose --profile full pull, este es el impacto en disco:
🖼️ Imágenes (Total: ~6.8 GB)#
| Categoría | Imágenes | Tamaño Est. |
|---|---|---|
| Orquestación | n8n (v2.7.5) | 580 MB |
| Bases de Datos Pesadas | MSSQL (2022) + Cassandra (4.1) | 2.8 GB |
| Bases de Datos Medias | MySQL, MariaDB, MongoDB, Postgres | 2.0 GB |
| Observabilidad | Prometheus, Grafana, cAdvisor | 650 MB |
| Microservicios (Destinos) | PHP, Alpine, Node, Python, Ruby, Go | 800 MB |
💾 Volúmenes y Persistencia (Total: ~1.2 GB)#
- Caché de Construcción: ~500 MB (Capas intermedias de Dockerfiles personalizados).
- Datos de DBs: ~550 MB (Espacio reservado para persistencia de los motores externos del núcleo y DuckDB embebida).
- Configuración: ~200 MB (Logs, n8n workflows, grafana dashboards).
📊 Consumo de RAM por Caso (Activación Selectiva)#
Consejo
Cada caso se levanta con
docker-compose --profile caseXX up -d. Las cifras incluyen el núcleo siempre activo (n8n1 GB +master-dashboard128 MB ≈ 1.13 GB). Si ya tienes el núcleo arriba, súmale solo la columna Δ Caso.
| Caso | Receptor | Δ Receptor | Base de Datos | Δ DB | Δ Caso | Total con núcleo | Categoría |
|---|---|---|---|---|---|---|---|
| 01 | PHP | 128 MB | MySQL | 512 MB | 640 MB | ~1.75 GB | 🟢 Ligero |
| 02 | Go | 64 MB | MariaDB | 256 MB | 320 MB | ~1.45 GB | 🟢 Ligero |
| 03 | Node.js | 128 MB | PostgreSQL | 256 MB | 384 MB | ~1.5 GB | 🟢 Ligero |
| 04 | FastAPI | 128 MB | SQLite (embebida) | 0 MB | 128 MB | ~1.25 GB | 🟢 Ligero |
| 05 | React + Node | 128 MB | MongoDB | 256 MB | 384 MB | ~1.5 GB | 🟢 Ligero |
| 06 | Symfony | 128 MB | Redis | 64 MB | 192 MB | ~1.3 GB | 🟢 Ligero |
| 07 | Ruby | 128 MB | Cassandra | 2 GB | 2.13 GB | ~3.25 GB | 🔴 Pesado |
| 08 | Flask | 128 MB | SQL Server | 2 GB | 2.13 GB | ~3.25 GB | 🔴 Pesado |
| 09 | FastAPI Gateway | 256 MB | DuckDB (embebida) | 0 MB | 256 MB | ~1.4 GB | 🟢 Ligero |
| 10 | Kotlin/Ktor (JVM) | 512 MB | PostgreSQL 16 | 256 MB | 768 MB | ~2.15 GB | 🟡 Medio |
| 11 | Erlang/Cowboy | 256 MB | Mnesia (embebida) | 0 MB | 256 MB | ~1.4 GB | 🟢 Ligero |
| 12 | FastAPI RAG | 256 MB | pgvector | 256 MB | 512 MB | ~1.65 GB | 🟢 Ligero |
| 13 | Go consumer | 128 MB | Kafka + ClickHouse | ~2 GB | ~1.6 GB | ~2.75 GB | 🟡 Medio |
| 14 | Node receiver + PostgREST | 192 MB | Postgres | 256 MB | 448 MB | ~1.6 GB | 🟢 Ligero |
| 15 | Go gRPC + Python | 256 MB | CockroachDB | 512 MB | 768 MB | ~2.0 GB | 🟡 Medio |
| 16 | Hasura + receiver | 448 MB | TimescaleDB | 512 MB | 960 MB | ~1.9 GB | 🟡 Medio |
| 17 | Node + Mosquitto | 160 MB | InfluxDB 1.8 | 512 MB | 672 MB | ~1.85 GB | 🟡 Medio |
| 18 | Crystal/Kemal | 128 MB | Neo4j 5 | 1 GB | 1.13 GB | ~2.3 GB | 🟡 Medio |
| 20 | Dart/Shelf | 128 MB | Firestore emulator | 1 GB | 1.13 GB | ~2.3 GB | 🟡 Medio |
Nota
19 de 20 casos implementados (Lotes 1–4,
v4.5.0–v4.8.0); sólo resta el 19. El 11 no añade contenedor de BD (Mnesia vive en el runtime BEAM); 13 (Kafka), 18 (Neo4j) y 20 (emulador Firestore) son los más pesados. Los límitesdeploy.resourcesson valores deldocker-compose.yml.
Importante
Casos 07 y 08 son los únicos "pesados" del laboratorio: cada uno consume ~3.25 GB por culpa de Cassandra/SQL Server. Si tu máquina tiene <8 GB de RAM disponibles, evita ejecutarlos en paralelo con otros casos.
🎯 Combinaciones recomendadas según RAM disponible#
| RAM libre | Combinación sugerida | Total estimado |
|---|---|---|
| 2 GB | Solo núcleo + 1 caso ligero (ej. case04) | ~1.25 GB |
| 4 GB | Núcleo + 3-4 casos ligeros (01, 02, 04, 06) | ~2.5 GB |
| 8 GB | Núcleo + todos los ligeros (01-06, 09) | ~4 GB |
| 16 GB | --profile full (incluye 07/08 y observabilidad) | ~10 GB |
🚧 Estimación para el único caso planificado (19)#
Advertencia
Cifra estimada, sin medición real (el caso 19 aún no está verificado end-to-end). Ver PLANNED_CASES.md.
| Caso | Stack resumido | Δ Caso (est.) | Total con núcleo (est.) |
|---|---|---|---|
| 19 | F# + Clojure + XTDB | ~1.5 GB | ~2.65 GB 🟡 |
Implementar el caso 19 restante requeriría ~2.65 GB de RAM adicionales sobre el --profile full actual.
➕ Componentes opcionales#
| Servicio | RAM | Cuándo se añade |
|---|---|---|
| Prometheus | 256 MB | --profile observability o full |
| Grafana | 512 MB | --profile observability o full |
| cAdvisor | 128 MB | --profile observability o full |
| Caddy edge proxy | ~80 MB | --profile edge |
Nota
El caso planificado 19 no se contabiliza aquí (no tiene perfil aún). Estimación bruta si se implementara: +2.65 GB adicionales por la incorporación de XTDB (F#/Clojure).
🚦 Decisión de Implementación: ¿Todo o Caso a Caso?#
Para usuarios con recursos limitados, recomendamos la Activación por Perfiles (profiles):
- Novato (Ligero):
docker-compose --profile case01 up -d- Consumo: ~1.2 GB Disco / 1.5 GB RAM Total.
- Si solo quieres el core del laboratorio,
make up-securedeja fuera observabilidad y casos pesados.
- Reclutador (Estándar): Casos 01 al 06.
- Consumo: ~4.0 GB Disco / 8 GB RAM.
- Senior (Full Lab): Todos los casos + Infraestructura.
- Consumo: ~8.0 GB Disco / 16 GB RAM.
- Edge Controlado:
make up-edgeademás del modo base.- Consumo: añade ~50-100 MB de RAM para Caddy y no sustituye el hardening de producción.
🏁 Reporte de Prueba de Estrés (Stress Test - Feb 2026)#
Se realizó una ejecución del stack completo (--profile full) en el hardware actual, resultando en los siguientes hallazgos críticos:
| Hallazgo | Impacto | Causa Raíz |
|---|---|---|
| Estabilidad General | 17/20 Servicios OK | Los servicios clave (n8n, Dashboard, DBs ligeras) operan sin problemas. |
| Falla en Cassandra | Cerrado Forzoso (OOM) | Alcanzó el límite de 2GB de RAM configurado, provocando un exit (137). |
| Falla en Case 07/08 | Inestabilidad en Ruby/Flask | Al caer Cassandra y subir el consumo general, los emisores/receptores dependientes fallaron. |
| Consumo de Disco | ~8.5 GB | Incluye imágenes descargadas y capas de construcción de Dockerfiles. |
Importante
Conclusión: El hardware actual es ideal para el Perfil Óptimo (Casos 01-06). Para el Perfil Experto (Todo el repo), se recomienda una máquina con al menos 16-24 GB de RAM (ej: Mac Mini con Silicon) para evitar la caída de servicios pesados como Cassandra.
🧹 Limpieza y Liberación de Recursos#
Antes de apagar el sistema o migrar de máquina, es fundamental limpiar los recursos para devolver el disco y la memoria al sistema operativo.
Opción 1: Vía Makefile (Recomendado)#
make cleanOpción 2: Vía HUB CLI#
python hub.py cleanOpción 3: Limpieza Total (Deep Cleanup)#
Si deseas liberar todo el espacio (incluyendo imágenes base como MSSQL, Cassandra y PHP) para que la máquina quede como si nunca hubiera ejecutado el repo:
# ADVERTENCIA: Esto borrará todas las imágenes no usadas por otros contenedores activos
docker system prune -a -f --volumes¿Qué hace este proceso?#
- Detiene y elimina todos los contenedores del proyecto.
- Elimina los volúmenes (borrando todos los datos de las bases de datos).
- Limpia imágenes huérfanas y redes temporales.
- Prune -a: Elimina imágenes base, liberando hasta 10GB+ de espacio.