Social Bot Scheduler

🐳 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:

bash
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 clean o python hub.py clean para una limpieza estándar.
  • Usa docker system prune -a -f --volumes para 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.

EscenarioAlmacenamiento (Disco)RAM SugeridaNotas
Estado ParcialVariable (~600 MB - 1 GB)4 GBSolo servicios básicos o un caso individual.
Núcleo (9 casos)~8.0 GB16 GBLos 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íaImágenesTamaño Est.
Orquestaciónn8n (v2.7.5)580 MB
Bases de Datos PesadasMSSQL (2022) + Cassandra (4.1)2.8 GB
Bases de Datos MediasMySQL, MariaDB, MongoDB, Postgres2.0 GB
ObservabilidadPrometheus, Grafana, cAdvisor650 MB
Microservicios (Destinos)PHP, Alpine, Node, Python, Ruby, Go800 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 (n8n 1 GB + master-dashboard 128 MB ≈ 1.13 GB). Si ya tienes el núcleo arriba, súmale solo la columna Δ Caso.

CasoReceptorΔ ReceptorBase de DatosΔ DBΔ CasoTotal con núcleoCategoría
01PHP128 MBMySQL512 MB640 MB~1.75 GB🟢 Ligero
02Go64 MBMariaDB256 MB320 MB~1.45 GB🟢 Ligero
03Node.js128 MBPostgreSQL256 MB384 MB~1.5 GB🟢 Ligero
04FastAPI128 MBSQLite (embebida)0 MB128 MB~1.25 GB🟢 Ligero
05React + Node128 MBMongoDB256 MB384 MB~1.5 GB🟢 Ligero
06Symfony128 MBRedis64 MB192 MB~1.3 GB🟢 Ligero
07Ruby128 MBCassandra2 GB2.13 GB~3.25 GB🔴 Pesado
08Flask128 MBSQL Server2 GB2.13 GB~3.25 GB🔴 Pesado
09FastAPI Gateway256 MBDuckDB (embebida)0 MB256 MB~1.4 GB🟢 Ligero
10Kotlin/Ktor (JVM)512 MBPostgreSQL 16256 MB768 MB~2.15 GB🟡 Medio
11Erlang/Cowboy256 MBMnesia (embebida)0 MB256 MB~1.4 GB🟢 Ligero
12FastAPI RAG256 MBpgvector256 MB512 MB~1.65 GB🟢 Ligero
13Go consumer128 MBKafka + ClickHouse~2 GB~1.6 GB~2.75 GB🟡 Medio
14Node receiver + PostgREST192 MBPostgres256 MB448 MB~1.6 GB🟢 Ligero
15Go gRPC + Python256 MBCockroachDB512 MB768 MB~2.0 GB🟡 Medio
16Hasura + receiver448 MBTimescaleDB512 MB960 MB~1.9 GB🟡 Medio
17Node + Mosquitto160 MBInfluxDB 1.8512 MB672 MB~1.85 GB🟡 Medio
18Crystal/Kemal128 MBNeo4j 51 GB1.13 GB~2.3 GB🟡 Medio
20Dart/Shelf128 MBFirestore emulator1 GB1.13 GB~2.3 GB🟡 Medio

Nota

19 de 20 casos implementados (Lotes 1–4, v4.5.0v4.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ímites deploy.resources son valores del docker-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 libreCombinación sugeridaTotal estimado
2 GBSolo núcleo + 1 caso ligero (ej. case04)~1.25 GB
4 GBNúcleo + 3-4 casos ligeros (01, 02, 04, 06)~2.5 GB
8 GBNú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.

CasoStack resumidoΔ Caso (est.)Total con núcleo (est.)
19F# + 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#

ServicioRAMCuándo se añade
Prometheus256 MB--profile observability o full
Grafana512 MB--profile observability o full
cAdvisor128 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):

  1. 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-secure deja fuera observabilidad y casos pesados.
  2. Reclutador (Estándar): Casos 01 al 06.
    • Consumo: ~4.0 GB Disco / 8 GB RAM.
  3. Senior (Full Lab): Todos los casos + Infraestructura.
    • Consumo: ~8.0 GB Disco / 16 GB RAM.
  4. Edge Controlado: make up-edge ademá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:

HallazgoImpactoCausa Raíz
Estabilidad General17/20 Servicios OKLos servicios clave (n8n, Dashboard, DBs ligeras) operan sin problemas.
Falla en CassandraCerrado Forzoso (OOM)Alcanzó el límite de 2GB de RAM configurado, provocando un exit (137).
Falla en Case 07/08Inestabilidad en Ruby/FlaskAl caer Cassandra y subir el consumo general, los emisores/receptores dependientes fallaron.
Consumo de Disco~8.5 GBIncluye 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)#

bash
make clean

Opción 2: Vía HUB CLI#

bash
python hub.py clean

Opció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:

bash
# ADVERTENCIA: Esto borrará todas las imágenes no usadas por otros contenedores activos
docker system prune -a -f --volumes

¿Qué hace este proceso?#

  1. Detiene y elimina todos los contenedores del proyecto.
  2. Elimina los volúmenes (borrando todos los datos de las bases de datos).
  3. Limpia imágenes huérfanas y redes temporales.
  4. Prune -a: Elimina imágenes base, liberando hasta 10GB+ de espacio.