“Las plataformas webs no se caen por falta de recursos, se caen por no manejar correctamente la tecnología”

Por Alejandro Yung

2 MIN DE LECTURA

13 julio 2020

En la actualidad nos enfrentamos de manera cada vez más frecuente escenarios en los que una gran cantidad de personas visitarán nuestras plataformas. Es cosa de pensar en lo ocurrido hace unos días cuando se aprobó en la Cámara de Diputados el retiro del 10% de los fondos de pensiones. En tan sólo unas horas todos los sitios de las AFPs se cayeron debido al gran número de personas que acudieron a cambiarse de fondos o consultar su estado.

Hay que tener en cuenta que esto es un peak, por lo que no podemos estar diseñando una infraestructura para que en su funcionamiento normal pueda aguantar estos tipos de demanda: hacer lo contrario sería equivalente a que las telecomunicaciones pongan la cantidad de antenas para resistir un escenario de terremoto, por ejemplo. La gran diferencia es que con los servidores tenemos opciones para resolver este problema.

La solución a este desafío está tanto en el escalamiento como en el encolamiento…En los siguientes párrafos explicaré de qué trata cada una. Vale la pena comentar que en este caso me referiré a soluciones aplicables a servidores Cloud de grandes prestadores como AWS, GCP o AZURE. Aunque en otro tipo de infraestructuras también es posible, eso implica una mayor complejidad.

Escalamiento

La palabra “escalamiento” refiere a la capacidad que tienen las infraestructuras de poder levantar un servidor adicional pasado cierto parámetro que podemos configurar. ¿A qué me refiero? Que podemos decirle a Amazon, por nombrar una empresa de servidores, que cuando el servidor esté en un 70% de uso de CPU o la memoria RAM a un 80%, que levante el otro servidor  y así divida  la demanda. De esta forma no se cae nuestro servidor. Esto es tan sencillo en la infraestructura Cloud debido a que posee una herramienta llamada balanceador de carga.

De la misma forma en que se levanta otro servidor, repitiendo el proceso un sinnúmero de veces, una vez pasado el peak y cumpliéndose las condiciones configuradas gradualmente empieza a disminuir la cantidad de servidores que se necesitan hasta llegar al estado normal.

Así ahorramos recursos, ya que sólo se paga la cantidad de servidores utilizados durante el tiempo que dure el peak y brindamos a nuestros usuarios una excelente experiencia. Hoy, gracias a la tecnología existente no se están cayendo las páginas por falta de presupuesto, si no que por falta de tecnología.

Encolamiento

Como vimos antes, cuando llega una demanda muy grande podemos pedirle a nuestra infraestructura que levante otro servidor, pero lamentablemente esto no es automático. Cada vez que se levanta un nuevo servidor pasan un par de segundos, quizás cerca de 15 o 20. Hay veces que ese gap de tiempo se transforma en un problema cuando la demanda es demasiado grande.

Imaginémonos que estamos detrás de una plataforma que debe vender para el CyberDay. En esos 15-20 segundos en que se está deployando otro servidor sigue entrando gente a la plataforma  y, una vez que se levantó el servidor nuevo, tengo aún más gente y debo levantar otro servidor y luego otro más… ¿Qué hago? La solución es armar un sistema de “encolamiento”, mediante el cual enviamos a un usuario a una página por un par de segundos o minutos. Luego de ese periodo de tiempo lo dejamos ingresar.

Si bien estos casos en los que uno debe aplicar el “encolamiento” no son muy comunes, sí existen. El lanzamiento del “Ingreso Familiar de Emergencia” es un excelente ejemplo y un caso para compartir: tuvimos más de 105 mil personas al mismo tiempo ingresando a una plataforma. Aquí pueden ver (link) cómo fue la configuración específica usada para ese caso.

Por lo tanto, cuando vean una página caída por demanda tienen todo el derecho de recriminar al área de tecnología de la compañía. Ciertamente no están haciendo bien su trabajo. Hoy con la tecnología existente, una caída por demanda no es por falta de recursos, es por falta de dedicación.

Alejandro Yung
CTO