PlusPlus

Bot de Slack para puntuaciones

reconstruido y mejorado por Redwerk
×
¿A dónde quieres que enviemos nuestro caso práctico de desarrollo de bots de Slack?
Por favor ingrese su correo electrónico comercial

PlusPlus es una startup de entretenimiento empresarial que proporciona funcionalidades para puntuar todo tipo de cosas y usuarios en Slack.

Todos los clientes

Desarrollo de productos

PlusPlus llegó a nosotros con un producto en Python ya desarrollado, que necesitaba un cambio de paquete tecnológico y mejoras de estabilidad. Captamos el código base en muy poco tiempo y comenzamos el desarrollo desde el día 1.

Más información

Startups e Innovación

Convertir ideas en código, probar y publicar los resultados, mejorar y mantener los proyectos es nuestra contribución a la felicidad tanto de los emprendedores de startups como de las comunidades de usuarios.

Más información

Desafío

PlusPlus es un chatbot para Slack hecho para el entretenimiento. Permite sumar, restar y puntuar las cosas que tus amigos dicen y hacen en Slack dirigiéndose a objetos y usuarios con ‘@’. Tiene una tabla de clasificación global y cada acción afecta a los resultados generales.

El reto para el equipo de Redwerk era reescribir completamente el bot existente, desarrollado originalmente en Python, utilizando Ruby como tecnología principal. También el objetivo era aumentar la estabilidad, hacer posible la escalabilidad y optimizar el rendimiento general de este proyecto de gran carga.

Solución

Hemos empezado con la parte más importante: la refactorización y la corrección del código. La antigua versión del bot estaba escrita en Python y necesitábamos portarla a Ruby,teniendo en cuenta todos los cambios adicionales que podrían surgir, así como arreglar los problemas existentes e implementar nuevas funcionalidades. Cuando estábamos planificando la infraestructura, basamos nuestras suposiciones sobre la carga en las estadísticas medias de uso del antiguo bot de Python: aproximadamente 500.000-700.000 acciones de usuarios por minuto. Ampliamos este nivel hasta ~1 millón de acciones de usuarios/minuto para tener cierto margen y proporcionamos un conjunto de pruebas de estrés.

Y aquí es donde apareció otro desafío. Resultó que Slack limita las pruebas a 1 mensaje por segundo y no tiene la funcionalidad para probar proyectos de alta carga. La carga real de PlusPlus era de más de 20-50 millones de acciones por minuto, y la infraestructura existente no podía soportarlo. Para cubrir la nuevos requerimientos, tuvimos que rehacer una parte importante de la lógica de la aplicación.

Users and objects logic optimization

El equipo de desarrollo de Redwerk necesitaba definir y optimizar cuidadosamente cualquier brecha e incluso las fugas más pequeñas de memoria y uso de CPU. La carga real del proyecto envió millones de acciones que contenían @usernames y @things en una sola línea. Los objetos requerían una lógica más avanzada que los usuarios, porque debían analizarse, luego verificar si existían en la base de datos, crear una nueva entrada si no existían, luego actualizar el puntaje, la tabla de posiciones y las tendencias globales. Con millones de tales acciones, la mayoría de ellas ocurriendo dentro de un solo mensaje, la base de datos se sobrecargó muy rápidamente, así como la memoria y la CPU.

Otra tarea de alta carga fue optimizar las actualizaciones de puntuación en las tablas de posiciones, ya que cada acción tenía que influir en la posición en las tablas de posiciones globales de usuarios y objetos. La cantidad increíblemente alta de elementos que debían analizarse, verificarse y actualizarse creó desafíos adicionales para el desarrollo.

Para optimizar todas estas acciones, nuestro equipo desarrolló una funcionalidad que utiliza múltiples núcleos de CPU en cada servidor, junto con un administrador de bots específico, que enruta cada bot a un nodo específico (Servidor + núcleo de CPU), un tipo de tarea que el balanceador de la carga de Amazon no pudo manejar. Después de eso, reconstruimos la lógica de solicitud para disminuir la cantidad de solicitudes.

También cambiamos de Ubuntu a CentOS. Ubuntu no nos permitía crear conexiones adicionales a una base de datos. CentOS, a su vez, proporcionó un entorno más estable mientras trabajaba con MongoDB y admitió la carga de acción excesiva. También nos permitió volver a configurar el servidor de AWS y actualizar la configuración central del sistema operativo en los nodos para mejorar el descriptor de archivos y los límites de los subprocesos.

Resultado

El equipo de Redwerk fue capaz de reescribir el bot PlusPlus por completo. Ahora su infraestructura funciona de forma estable y tiene suficientes soluciones para mantenerla funcionando y restaurarla si es necesario. También hemos creado un mecanismo para simplificar el escalado y añadir nuevos servidores rápidamente.

También entregamos la solución con la documentación actualizada y hemos realizado una sesión de formación para los clientes sobre cómo manejar y mantener el sistema renovado.

Add to Slack
Resultado

¿Está buscando un equipo profesional de desarrollo de productos?

Contactar ahora

Tecnologías

1.000.000de usuarios totales
>500.000canales activos
4personas en el equipo de desarrollo
5meses para finalizarlo
19,889líneas de código

Comentario del equipo Redwerk

Alex

Alex
Desarrollador

El reto para el equipo de Redwerk era reescribir por completo el bot existente, desarrollado originalmente en Python, utilizando Ruby como tecnología de base. También se nos encargó aumentar la estabilidad, hacer posible la escalabilidad y optimizar el rendimiento general de este proyecto de gran carga.

Media
Media
Media
Media

Relacionado en Blog

Errores típicos al trabajar con una base de datos en Ruby on Rails

Errores típicos al trabajar con una base de datos en Ruby on Rails

Cuando oímos hablar de "Ruby", a menudo lo asociamos con "Ruby on Rails". Rails es un framework muy funcional y popular que se utiliza ampliamente para la construcción de APIs y aplicaciones web. Rails consta de gemas independientes y ActiveRecord es una de ellas. Esta potente ge...

Leer más

¿Listo para empezar su proyecto de software?

Contacte con nosotros

Otros casos prácticos

Cleanagents

Cleanagents

Germany

Creamos una aplicación Android para limpiadores autónomos en Alemania y Austria, que pronto fue adquirida por Helpling.de.

Adfectious

Adfectious

Romania

Desarrollo de un sistema de publicidad móvil inspirado en AdMob de Google y utilizado en medios de comunicación rumanos populares como meteoromania.ro.