Mayday es la primera app que usa Booster

Juan Sagasti
The Agile Monkeys’ Journey
4 min readFeb 1, 2021

--

En The Agile Monkeys tenemos iniciativas y proyectos bastante interesantes, dos de los cuales son Booster y Mayday. Ambos proyectos comparten la filosofía de simplificar y ayudarte a dedicar el tiempo a aquello que importa.

Cosas que importan

Booster es un framework open-source muy innovador para el desarrollo de backends con arquitectura Event-Sourcing que permite a los desarrolladores centrarse en lo que de verdad importa: la lógica de negocio que hace única a tu aplicación. Sus abstracciones de alto nivel te ahorran lidiar con la infraestructura serverless necesaria y despliega por ti en AWS (próximamente más proveedores) todos los recursos necesarios. No tienes que trabajar directamente con estos recursos a bajo nivel (bases de datos, conexiones, funciones…) y establece un marco de trabajo muy definido y fácil de entender y mantener a través de Comandos, Eventos, Entidades y Read Models. Todo ello con un lenguaje expresivo y seguro como TypeScript.

¡Booster es como un Ruby On Rails de serverless! La curva de aprendizaje es sencilla: ¡ya no necesitas ser un experto en las herramientas cloud para ser productivo!

Por otro lado, Mayday es una aplicación gratuita de mensajería para iOS y Android que pretende ser un canal de comunicación exclusivo para enviar y recibir mensajes importantes o urgentes, al tiempo que respeta tu privacidad y seguridad. De esta forma puedes silenciar el caos del resto de notificaciones al que nos vemos sometidos a diario y que raptan nuestra atención y así poder centrarte en las cosas importantes de tu vida. Su filosofía y funcionalidad son muy diferentes. Si quieres saber más, consulta este artículo sobre la aplicación o su web oficial.

La puedes descargar ya para iOS y Android.

De Firebase a Booster 🚀

Para la primera versión beta de Mayday usamos los SDKs mobile y las Cloud Functions de Firebase con el fin de crear un prototipo funcional que validara ciertas hipótesis lo antes posible. Firebase es una plataforma fantástica que ahorra mucho trabajo en muchos aspectos, pero a medida que el código del backend ganaba en complejidad y perdíamos cierto rendimiento, decidimos migrar a una plataforma más madura y versátil como AWS. Booster nos simplificó muchísimo esa tarea:

  • Las aplicaciones creadas con Booster son muy rápidas al beneficiarse de la madurez, escalado, rendimiento y potencial de AWS.
  • Al construir tu lógica de negocio usando una abstracción de muy alto nivel a través de una serie de componentes bien definidos e interconectados entre sí (Comandos, Eventos, Entidades y Read Models), el codebase se vuelve cómodo, predecible, expresivo, seguro (también gracias a TypeScript) y, en definitiva, fácil de entender y mantener; aspectos clave para cualquier equipo de desarrollo. Cualquier programador que se una a tu proyecto puede empezar a ser productivo en muy poco tiempo, incluso si no tiene experiencia previa con serverless.
  • Nos olvidamos por completo de la configuración de la infraestructura, que suele requerir lidiar con ficheros YAML o la consola de AWS.
  • El equipo de Booster es muy abierto y rápido a la hora de añadir nueva funcionalidad al framework. Siempre están accesibles en su servidor de Discord, y al ser open-source puedes modificar fácilmente y extender tú mismo el framework y adaptarlo a tus necesidades, si fuera necesario. Por si fuera poco, soporta un sistema de plug-ins (Rockets) que permite extender su funcionalidad muy fácilmente.
  • La creación de sinergias y retroalimentación entre ambos proyectos de la empresa era otro de nuestros objetivos. Eso permitió acelerar el desarrollo de Booster, que ahora soporta funcionalidad como un sistema de autenticación genérico basado basado en tokens JWT, comandos programados en el tiempo, borrado de Read Models…
  • Dicho sistema de autenticación de Booster nos permitió seguir manteniendo Firebase para el login de usuarios y ahorrar tiempo. Firebase se sigue encargando de obtener y renovar el token que luego utiliza Booster para todas sus operaciones. Pero el sistema de tokens de Booster es genérico y podríamos usar cualquier proveedor de autenticación que use tokens JWT (Auth0, por ejemplo).
  • La API GraphQL que Booster expone a las apps permite lidiar con los datos de forma muy cómoda y construir aplicaciones real-time y reactivas, como son las aplicaciones móviles de Mayday. Es muy sencillo crear suscripciones y Mayday las utiliza, entre otras cosas, para mantener la lista de Maydays actualizada en tiempo real.
  • Los Scheduled Commands (Comandos programados) nos permitieron cumplir fácilmente con uno de los requisitos clave de Mayday: ir borrando los Read Models de los maydays que ya fueron resueltos hace 24 horas.
  • Hemos creado un sistema de detección de contactos muy rápido entre las apps y Booster que comprueba cada cierto tiempo si alguno de tus contactos ya está en Mayday. Todo esto sin almacenar en ningún momento la agenda de los usuarios en el servidor. La privacidad es otro punto clave.

Gracias a todo ello, Mayday se ha podido convertir en la primera aplicación en producción que usa Booster. Su equipo sigue trabajando en nuevas funcionalidades para el framework, así como en hacer crecer el ecosistema Booster con nuevas aplicaciones y servicios como un data store especializado en eventos llamado Booster DataStore que lanzaron recientemente.

El desarrollo de aplicaciones en la nube se ha convertido en algo muy intimidante y tiene una curva de aprendizaje muy compleja. Booster nació durante el proceso de aprendizaje de nuestro equipo sobre el paradigma Serverless, el que enfrentamos una serie de fricciones relacionadas con la curva de aprendizaje del mundo Cloud. Y constituye un paso importante en esa dirección, en la que plantea un futuro guiado por eventos y reactivo sin ganar en complejidad gracias un nivel de abstracción superior.

--

--

Juan Sagasti
The Agile Monkeys’ Journey

Software Engineer  & Co-founder at The Agile Monkeys 🐒