Departamento técnico, Mobdala

Sistemas escalables

Vivimos en un mundo en el que tu cafetera te dice cuando se te va a acabar el café y los coches se conducen solos, pero en el que a veces se nos caen los servidores cuando reciben más peticiones de las normales;  o que una nueva idea de producto hace que los desarrolladores tengan pesadillas por las noches por culpa de no tener una buena arquitectura de software.

En Mobdala gestionamos una gran cantidad de datos, y no nos podemos permitir colapsos por culpa de una gran afluencia de personas a un lugar en concreto, entre otras cosas, porque nosotros nutrimos de esa información a nuestros clientes para que ellos aprendan de los suyos.

Además, somos una startup, por lo tanto siempre se están barajando nuevas ideas para hacer de Mobdala un producto más atractivo y más útil.

Esto para el departamento técnico se traduce en que necesitamos tener un sistema escalable (https://en.wikipedia.org/wiki/Scalability) perfectamente capaz de adaptarse y hacerse más grande sin perder calidad y, por supuesto, sin perder información. Debe estar montado de tal manera que añadir, quitar o cambiar ‘piezas’ no suponga un drama.

Una de las muchas medidas adoptadas por el equipo técnico con este propósito son las colas de mensajes.

Un sistema de colas es el encargado de gestionar las peticiones hacia el servidor de una manera ordenada distribuyéndolas a otras máquinas encargadas de realizar una o varias operaciones con dicha petición.

Las ventajas de usar colas son muchas:

Redundancia y Disponibilidad: Si la aplicación falla por algún motivo, no habrá información que se pierda ya que la información se mantiene almacenada en la cola hasta que el servidor le diga explícitamente al sistema de colas que ha consumido el mensaje correctamente y pida el siguiente.

 Asincronismo: este término hace referencia al suceso que no tiene lugar en total correspondencia temporal con otro suceso.

Si no eres técnico, lo entenderás mejor con un ejemplo:

             Síncrono: Quiero enviar un mensaje así que llamo a la persona con la que quiero comunicarme. La otra persona deja todo lo que esté haciendo y responde a mi llamada.

             Asíncrono: Quiero enviar un mensaje, así que escojo mi aplicación de mensajería preferida, envío mi mensaje y, como veo que el receptor no está disponible ahora, cierro el móvil y continúo haciendo cosas.

Garantía de entrega y orden: no, no es una ley de extradición, se refiere a que con un sistema de colas tenemos la certeza de que los mensajes van a llegar, pero es que además, van a llegar en el orden en el que han sido emitidos, y esto en la mayoría de los casos es algo muy importante.

Desacoplamiento: un sistema de colas es una capa independiente que se encarga de comunicar diferentes procesos. Esto traducido significa, que un proceso no va a hablar directamente con otro, sino que mirará al sistema de colas y hará un “- eh tú! dile a ese que blablabla”.

Esto nos da la facilidad de definir la arquitectura de la aplicación de muchas maneras e incluso cambiarla según las necesidades sin demasiados problemas.

Escalabilidad: teniendo en mente el punto anterior, igual que tenemos la capacidad de evolucionar nuestra arquitectura de forma independiente de la capa de comunicación, también podemos multiplicar nuestra potencia muchísimo simplemente añadiendo ‘consumidores’. Ejemplo: Imaginemos un agricultor con su cosechadora que cosecha un cultivo cada mes, y un día se encuentra que en un mes tiene que cosechar 100 campos. Tiene dos opciones, comprar el Ferrari de las cosechadoras y arriesgarse a morir en el intento o poner a 100 cosechadoras a trabajar a la vez.

Como no necesitamos el Ferrari de los servidores, en nuestro caso esto significa que si de golpe recibimos una grandísima afluencia de datos, tenemos la capacidad de añadir más máquinas para procesar esos datos sin complicaciones.

Este es el sistema en el que nosotros confiamos para tener una aplicación capaz de reaccionar y adaptarse.

Si te interesa y quieres seguir aprendiendo sobre el tema hay infinidad de recursos online, o si quieres también puedes preguntarme directamente, respondo dudas a cambio de café.

Emilio Ríos

@emiiio_rios