¿Cómo manejar aplicaciones con alto volumen de tráfico?
Si no preparamos nuestras aplicaciones para soportar un incremento de tráfico corremos el riesgo de padecer intermitencias o hasta la caída del sistema.
Si no preparamos nuestras aplicaciones para soportar un incremento de tráfico corremos el riesgo de padecer intermitencias o hasta la caída del sistema.
POR ADÁN VILLAMAR / PRINCIPAL ENGINEER DE PROYECTOS CAPTACIÓN EN HTECH
Toda empresa que gestiona algún servicio de software que recibe peticiones de clientes debe estar preparada para soportar desde una cantidad mínima, hasta un alto volumen de peticiones.
Por muy pequeña que sea la aplicación o recién esté iniciando el proyecto, lo normal es que se espere que el número de usuarios crezca con el tiempo. Por ello, si no se prepara el proyecto para soportar este incremento se corre el riesgo de, en cierto punto, agotar los recursos destinados, lo que ocasiona problemas como intermitencias, agotamiento de memoria, falta de espacio de almacenamiento o hasta caída total del sistema.
Desde un inicio, un paso importante para no tener problemas en un futuro es realizar un análisis y una proyección del crecimiento del negocio. Esto engloba los recursos que serán asignados al proyecto y qué tipo de tecnologías es más conveniente implementar.
Por ejemplo, una aplicación que recién empieza puede trabajar en un servidor con una serie de recursos fijos e ir midiendo el comportamiento de la aplicación conforme pasa el tiempo, para estar preparada para cualquier incremento de carga de trabajo, ya sea generando otro servidor espejo con iguales características o subiendo las características del servidor actual para que cubra la demanda de trabajo.
Desde hace ya algunos años, grandes colosos de la tecnología como Amazon (Amazon Web Services) o Microsoft (Azure) han intentado brindar ecosistemas completos que nos permitan administrar nuestras aplicaciones en un entorno más dinámico y automatizado, desde creaciones de servidores listos en un par de minutos, hasta el manejo de seguridad de todos nuestros ambientes con unos cuantos clics.
Todas estas herramientas, usándolas de una manera correcta, nos pueden ahorrar muchas horas de trabajo y administración de los recursos de una forma exponencial, pero esto puede ser un arma de doble filo si no se utiliza adecuadamente.
Una constante en este tipo de tecnologías es la modalidad de cobro por uso. Esto quiere decir que, si los recursos son dinámicos, el costo final también lo es, por lo que un uso de los recursos no calculados se puede traducir en una factura alta en cuanto a costos, y esto, para una pequeña empresa, puede ser un gran golpe en su economía.
Todo depende del uso proyectado que calculemos y ver si la balanza se inclina a nuestro favor.
Por último, pero no menos importante, antes de liberar cualquier sistema a la internet es muy recomendable realizar distintos tipos de pruebas. En este caso hay dos que son fundamentales para medir el rendimiento de aplicaciones con alto volumen de tráfico:
Pruebas de Rendimiento: son para conocer principalmente la estabilidad y el tiempo de respuesta de la aplicación simulando distintas cargas de trabajo.
Pruebas de estrés: intentan alcanzar el límite máximo de carga de trabajo que puede soportar la aplicación y ver hasta qué punto puede llegar a ocurrir un fallo y así definir cómo mitigarlo.
Actualmente hay muchas herramientas para simular una carga específica de trabajo en nuestras aplicaciones, como Locust, Loader.IO, entre otras, que nos ayudan a estar más preparados para eventos inesperados.
Como vemos, trabajar con proyectos con alto volumen de tráfico de usuarios puede ser todo un reto en un principio si no se saben manejar adecuadamente, pero teniendo una planeación correcta y usando las herramientas adecuadas estaremos preparados de la mejor manera para cuando nuestro proyecto crezca.
No olvidemos que en la actualidad hay muchas nuevas tecnologías que nos permitirán manejar estos escenarios de la mejor manera, sólo es cuestión de aplicarlas.