Ir al contenido
Todos los casos

1 instancia → N clientes · Rubro comunicación masiva

Mensajería omnicanal

Plataforma multi-tenant sobre WhatsApp para retail

webhook → tenant
POST /webhooks/whatsapp
phone_number_id1049…
tenantcliente_b
inboxaislado
sidekiq · rediscola
postgres.transactionok

El problema

Cada cliente necesitaba su propio número de WhatsApp y su propia bandeja, sobre una única instancia compartida. Levantar una instalación entera por cliente multiplicaba servidores, actualizaciones y certificados.

La decisión

Resolver el tenant en el borde, por identificador de número, antes de que el webhook toque la aplicación. Lo que no puede quedar a medias vive en PostgreSQL.

Ruteo por identificador de número

Cada webhook entrante se resuelve a su tenant antes de tocar la aplicación. El alta de un cliente nuevo pasa por el Embedded Signup de Meta, sin intervención manual.

Lógica atómica en PostgreSQL

Las operaciones que no pueden quedar a medias viven en la base, con constraints y transacciones, para preservar integridad bajo carga en lugar de confiar en el orden de ejecución.

Docker, Caddy y Sidekiq

Orquestación en contenedores, TLS y reverse proxy con Caddy, y pipelines asíncronos en Sidekiq sobre Redis para todo lo que no puede bloquear una request.

El resultado

Multi-tenancy real sin duplicar infraestructura: 45 cuentas sobre una sola instancia, y dar de alta una nueva dejó de ser un despliegue entero.

45

Cuentas en producción

+500.000

Mensajes entrantes por mes

1

Instancia para todas

Ficha técnica

Rol
Backend Lead. Diseño y sostengo el backend de la plataforma.
Base del proyecto
Plataforma open source self-hosted, en Ruby on Rails, que extiendo
Datos y cola
PostgreSQL con lógica atómica · Redis · Sidekiq
Infraestructura
Docker y Docker Compose · Caddy · VPS self-hosted
Integraciones
WhatsApp Cloud API · Embedded Signup de Meta · n8n · Evolution API
Clientes
Retail. Por acuerdo de confidencialidad, no menciono nombres.

Caso siguiente

Skin Studio

Turnos y e-commerce construidos de punta a punta, con las reglas del negocio en el dominio

¿Trabajamos juntos?

Hablemos.

Lo diseño, lo construyo entero y me hago cargo de que siga andando. Escribime y hablamos. Respondo en el día.