PlusPlus

Bot de Slack para puntuaciones

reconstruido y mejorado por Redwerk

Incling
PlusPlusMelbourne, Australia

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

Challenge

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.

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

Contactar ahora

1.000.000

de usuarios totales

>500.000

canales activos

4

personas en el equipo de desarrollo

5

meses para finalizarlo

19,889

líneas de código

Resultados

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.

PlusPlus

¿Listo para empezar su proyecto de software?

Contacte con nosotros
Redwerk developer's comment
Alex

Alex
Developer

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 nos encargaron aumentar la estabilidad, hacer posible la escalabilidad y optimizar el rendimiento general de este proyecto con tan alta carga de trabajo.

Related in Blog

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

Click to read more

Errores típicos al trabajar con una base de datos en Ruby on Rails
30 de January de 2018
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 ...

Otros estudios de caso

Russia
Developed iPad appweb portalspecial Facebook and Vkontakte apps for place-based review sharing solution
Romania
Developed mobile advertising system inspired by Google’s AdMob and used on popular Romanian media like meteoromania.ro
Germany
Built Android app for self-employed cleaners across Germany and Austriasoon acquired by Helpling.de