← Recursos

Arquitectura de bots escalable

Un bot que escala no es "un script más grande": es eventos → cola → workers → persistencia → integraciones, con límites de plataforma y observabilidad desde el día uno. Discord, Telegram y WhatsApp imponen rate limits distintos, esperan acuse de recibo en milisegundos y reintentan agresivamente si tu webhook falla. Este recurso es la arquitectura mínima que usamos en bots de producción: qué cambia entre un MVP y una versión que aguanta 500 msg/s sin perder ninguno.

1. El diagnóstico: por qué los bots caen en producción

El 80% de los bots que mueren en producción tienen el mismo perfil: un solo proceso Node/Python con todo en memoria, sin cola, sin idempotencia, respondiendo al webhook con la lógica de negocio síncrona. Funciona en pruebas y revienta el día que un grupo grande envía 50 mensajes en 3 segundos. Telegram reintenta, WhatsApp marca tu número como problemático, Discord te frena.

El otro 20% cae por multi-tenant mal hecho: un bot que sirve a 30 servidores de Discord guarda el estado en variables globales, mezcla configuraciones y un cliente acaba viendo datos de otro. La arquitectura escalable no es opcional cuando vendés el bot como servicio.

2. Capas mínimas de un bot production-ready

3. Multi-tenant: un bot, muchos clientes

Si vendés el bot como servicio (un servidor Discord por cliente, una cuenta WhatsApp por empresa), tenant_id tiene que estar en cada tabla, cada job de cola y cada llamada a APIs externas. Patrones útiles:

4. MVP bot vs Production bot

MVP bot (semanas 1–2)
  • Un proceso Node/Python, sin cola
  • Webhook → handler síncrono
  • SQLite o Postgres simple
  • Logs a stdout, sin métricas
  • Sin idempotencia formal
  • Deploy en Railway/Render, un solo entorno
  • OK hasta ~50 usuarios concurrentes
Production bot
  • Webhook detrás de balanceador, N réplicas
  • Redis + BullMQ (o SQS), DLQ activa
  • Postgres con migraciones versionadas
  • Logs estructurados + Prometheus/Datadog
  • Idempotencia por message_id en Redis
  • Rate limit propio respetando el de la plataforma
  • Multi-tenant, secretos cifrados, backups
  • Aguanta 100–500 msg/s sin perder ninguno

5. Preguntas frecuentes

¿Cuándo dejar de usar un bot stateless?

En cuanto necesitás recordar contexto entre mensajes, gestionar suscripciones o trazar tickets. Stateless aguanta ~50 usuarios concurrentes; a partir de ahí perdés mensajes en reinicios y no podés escalar horizontal. Pasá a stateful con PostgreSQL + Redis para colas.

¿Qué cola elegir: Redis, RabbitMQ o SQS?

Redis + BullMQ si querés simple y rápido con UI. RabbitMQ si necesitás routing complejo, exchanges fanout/topic. SQS si vivís en AWS y querés cero operación con DLQ gratis. Para 10–500 msg/s, Redis cubre el 90% de casos.

¿Cómo manejar idempotencia en webhooks?

Cada plataforma envía un ID único (update_id en Telegram, message ID en Discord). Guardalo en Redis con TTL 24 h al recibir; si ya existe, descartá. Previene duplicados cuando la plataforma reintenta porque tu 200 OK llegó tarde.

¿Cuáles son los rate limits típicos?

Telegram: 30 msg/s global, 1/s por chat individual, 20/min por grupo. Discord: 50 req/s por bot token, con buckets por endpoint. WhatsApp Cloud API: 80 msg/s por número, escala con calidad. Si los superás, te frenan o te suspenden.

¿Cómo escalar horizontal sin duplicar mensajes?

Webhooks a un endpoint → balanceador → N réplicas. Cada réplica solo encola; workers consumen con ack manual. Para long-polling de Telegram, una sola instancia o leader election con Redis SET NX.

¿Necesitas implementación de bots a escala?

Diseñamos y desplegamos bots de Discord, Telegram y WhatsApp con colas, idempotencia, multi-tenant y observabilidad. Auditamos también bots existentes que pierden mensajes o se quedan colgados.

Servicio de bots   Pedir presupuesto

Recursos relacionados

Última actualización: junio de 2026 · Escrito por el estudio RoviDev.

Pide presupuesto sin compromiso

Cuéntame brevemente tu proyecto y te respondo normalmente en menos de 30 minutos con viabilidad, fases y un rango de precio.

o escribe a contacto@rovidev.com