Podemos haber creado la API con los mejores patrones, con el codigo más limpio y reutilizable que quieras, que va muy fina, pero cuando llega el momento y sale a producción, puede ocurrir que se produzcan time-out, y no es culpa de tu magnifico desarrollo, es culpa de no haber previsto una infraestructura y escalado adecuado. Puede que operaciones esté allí a pie de cañón para escalar vertical u horizontalmente. Pero qué necesidad tienes de esa incertidumbre.
En el cloud, podemos crear reglas de escalado si conocemos los límites de nuestra arquitectura. Y no sirve que cuando llegue al 80% de CPU escale, esto puede estar bien a corto plazo, pero a largo supone un coste economico. Si hubieras realizado pruebas de stress, sabrías que quizá tu servicio aguanta muy bien hasta el 92%, aquí es cuando debes desplegar un nuevo nodo. Esto del 92% no es apurar, es acotar gastos. Es decir, medir y medir. Si no has realizado performace test, no podrás optimizar costes con los SKUs de los recursos adecuadamente.
A parte del anterior ejemplo, podemos preguntarnos que más nos dan las pruebas de rendimiento:
-
Mejorar el rendimiento de la aplicación es mejorar el resultado final.
-
Nos ayuda a un optimizar y ser eficiente con los recursos.
-
Hoy en día los usuarios somos muy exigentes y un entorno lento, con lags, que nos deja esperando, nos exaspera y nos vamos a otro entorno. En un producto empresarial interno, no se traduce en pérdida de clientes, si no productividad.
Por eso en Tokiota, nos preocupamos de introducir y formar a nuestros compañeros en cosa como esta. Y es JMeter nuestra herramienta de batalla.
Pero existen otras que también pueden acoplarse a tu entorno, ya sean de pago o gratuitas:
Una de las cosas que podemos hacer con estas herramientas es medir el stress, la carga máxima sostenida y ver cómo se comporta el escalado, test de pico, resistencia, … de una aplicación. Con todos estos atributos medidos, sabemos el marco de trabajo y bajamos la incertidumbre, que siempre existe, pero reducida a la mínima expresión.
Si bien es cierto que para hacer las cosas bien, necesitas un entorno muy controlado, no es lo mismo probarlo en tu máquina, que hacerlo en maquina dedicada exclusivamente para ello. Debemos tener mucho cuidado y evaluar siempre bajo las mismas condiciones, es como un experimento debemos controlar los factores exógenos. Las mediciones serían erróneas.
Cuando tengas todo medido, tendrás tu base line, tu linea base donde comparas siguientes iteraciones de pruebas. Y como no, este tipo de pruebas entran en el ciclo de DevOps.
Por eso nuestra recomendación, es que dediques un tiempo a formarte en esta área. Intenta hacer proselitismo de estas acciones, ya que la inversión inicial garantiza un retorno inmediato.
Espero que estas pocas lineas hayan despertado tu interés y evalúes la posibilidad de hacer cada vez más robusta tu aplicación.