Cómo MoEngage logró personalización en milisegundos con ScyllaDB
La personalización en tiempo real se ha convertido en un pilar fundamental para las plataformas de engagement con clientes. Las empresas necesitan reaccionar al instante ante cada acción del usuario: enviar una oferta justo después de una visita, ajustar segmentos dinámicamente o recomendar contenido basado en el último clic. Lograr esto con latencias de milisegundos y volúmenes masivos de datos requiere una arquitectura de base de datos radicalmente diferente a la tradicional. MoEngage, una plataforma líder en el sector, enfrentó este desafío y lo resolvió construyendo un sistema de almacenamiento de eventos de altísimo rendimiento sobre ScyllaDB, una base de datos distribuida derivada de Cassandra pero reescrita en C++ para aprovechar al máximo el hardware moderno. La clave no fue solo la tecnología subyacente, sino un diseño cuidadoso de esquemas, estrategias de particionamiento y modelos de multi-tenencia que garantizaran aislamiento y rendimiento predecible.
El primer gran reto fue manejar una ingesta constante de cientos de miles de eventos por segundo sin que la latencia de lectura se disparara. La solución pasó por dividir inteligentemente los datos de cada usuario en fragmentos manejables —lo que en bases de datos distribuidas se conoce como evitar el 'large partition anti-pattern'—. En lugar de usar una clave de partición simple como el identificador de usuario, se incorporó un bucket temporal que limita el tamaño máximo de cada partición a unos pocos cientos de miles de eventos. Esto permite que las lecturas sean rápidas y predecibles, incluso para usuarios extremadamente activos. Además, la elección de una estrategia de replicación con factor 3 y consistencia LOCAL_QUORUM garantiza tolerancia a fallos y cero pérdida de datos, al distribuir las copias entre distintas zonas de disponibilidad de AWS. Esta arquitectura, aunque compleja, es exactamente el tipo de desafío que abordamos en Q2BSTUDIO, donde ofrecemos aplicaciones a medida y servicios cloud AWS y Azure para desplegar infraestructuras de alto rendimiento y baja latencia.
La gestión de la multi-tenencia fue otro punto crítico. No todos los clientes tienen los mismos requisitos de retención de datos ni los mismos volúmenes de tráfico. Alojar a todos en un único clúster habría generado problemas de 'vecinos ruidosos' y dificultades para cumplir con SLAs diferenciados. Por ello, MoEngage optó por una estrategia de aislamiento físico mediante múltiples clústeres independientes de ScyllaDB, agrupando a los inquilinos según su política de retención (15, 30 o 60 días) o sus necesidades de rendimiento. Esto permite configurar Time-To-Live a nivel de tabla, optimizando la gestión de compactaciones y reduciendo la sobrecarga operativa. Esta aproximación es similar a la que aplicamos en nuestros proyectos de inteligencia artificial para empresas, donde segmentamos cargas de trabajo para garantizar que cada modelo o agente IA reciba los recursos que necesita sin interferencias.
La elección del hardware también fue determinante. Para cargas de escritura intensiva, los discos NVMe locales ofrecen una latencia mucho más predecible que los volúmenes EBS, que están diseñados principalmente para lecturas. MoEngage seleccionó instancias i3en de AWS, que proporcionan un balance óptimo entre CPU, memoria y almacenamiento rápido. Combinado con la estrategia de compactación incremental (ICS) de ScyllaDB Enterprise, lograron reducir drásticamente la amplificación de espacio en disco, pasando de necesitar un 50% de espacio libre a solo un 20%, lo que permitió utilizar más del 80% de la capacidad de cada nodo. Estas decisiones de infraestructura son clave también en entornos de ciberseguridad donde la velocidad de respuesta y la resiliencia son críticas.
Una lección fundamental de esta experiencia es que el diseño del esquema de base de datos debe realizarse pensando en el largo plazo, porque una vez creada una tabla con una clave de partición, no se puede modificar. Incluir un bucket_id desde el inicio proporciona la flexibilidad necesaria para ajustar la estrategia de particionamiento a medida que crecen los datos sin necesidad de migraciones dolorosas. Esto es parte del valor que aportamos en Q2BSTUDIO al desarrollar software a medida para empresas que necesitan escalar sin comprometer el rendimiento.
Mirando al futuro, la evolución hacia ScyllaDB Enterprise y el uso de tablets promete una elasticidad aún mayor, permitiendo rebalancear la carga de forma automática ante picos de tráfico sin intervención manual. Esto acerca el sueño de una personalización verdaderamente en tiempo real, donde cada interacción del usuario puede ser procesada en milisegundos y utilizada para activar campañas, actualizar segmentos o alimentar motores de recomendación basados en inteligencia artificial. En Q2BSTUDIO, combinamos estas tecnologías con nuestros servicios de inteligencia de negocio y Power BI para ofrecer dashboards en tiempo real que reflejen el comportamiento actual de los usuarios, así como agentes IA que toman decisiones autónomas basadas en flujos de eventos. La experiencia de MoEngage demuestra que, con la arquitectura adecuada, es posible ofrecer personalización en milisegundos a escala global.
Comentarios