Rendimiento vs Escalabilidad

Antes de que vayamos más lejos, debemos discutir las diferencias (y similitudes) entre el rendimiento y la escalabilidad.

Rendimiento, en el contexto de una aplicación web, es lo rápido que puede servir datos (páginas) para el usuario final. Cuando se habla de aumentar el rendimiento de su aplicación,  se está hablando  de reducir de 500 ms a 300 ms para generar el contenido.

Escalabilidad, por el contrario, es la cualidad que permite que la aplicación vaya creciendo a medida que crece su tráfico. Una aplicación escalable es en teoría, “no importa cuánto tráfico se envía hacia ella, pueden tener mayor capacidad para manejar ese tráfico”.

Escalabilidad y rendimiento, obviamente, están interrelacionadas. A medida que aumenta el rendimiento de una aplicación, se requieren menos recursos para escalar, por lo que el crecimiento de la aplicación es más fácil. Del mismo modo, no se puede llamar a una aplicación escalable si se requiere un servidor web por usuario para un rendimiento adecuado, ya que sería insostenible.

Ahora cuando pensamos en escalabilidad u rendimiento generalmente nos viene a la cabeza servidores y mas servidores de gran capacidad, por que creemos que esto es clave para que nuestra aplicación tenga un buen rendimiento, y que si queremos escalar bastara con agregar más y más servidores hasta cumplir el propósito.

Pero la verdad es que muy pocos de nosotros nos olvidamos que para tener estas dos características debemos de empezar desde la arquitectura y el código de nuestra aplicación, ya que si este consume a lo loco recursos del servidor entonces no habrá servidor en el mundo que la pueda soportar, entonces desde que generamos el código debemos tener cuidado con nuestros algoritmos y que estos sean de lo mas rápidos. y sobre todo que nuestra aplicación soporte clouster.

 

En los inicios de apple se les pidió a los ingenieros que aplicaran la técnica WYSIWYG (lo que ves es lo que obtienes) para su procesador de textos, lo cual implicaba que simulara la hoja y claro el fondo de color blanco, en ese tiempo esa algo muy complicado ya que el hardware no se los permitía.

Pero hoy en día cualquier procesador de textos cumple  con esa característica, pero para desgracia o buena suerte el hardware esta muy avanzado que no nos tenemos que preocupar de la memoria, almacenamiento (algo que es hoy en día es muy barato), o tener que esperar horas para saber si nuestro código en las tarjetas perforadas funciona, esto es para nuestra buena suerte, para nuestra desgracia solo presionamos F5 y sabremos si funciona, lo menciono como desgracia por que ya no nos preocupamos por optimizar el código o analizar bien la solución. y claro las consecuencias llegan cuando queremos que el código que picamos soporte un gran numero de peticiones.

Por ejemplo: Que deberíamos usar:

echo “cadena”. “ concatenada: ”. $valor

O

echo “cadena”, “ concatenada: ”, $valor

Con la dos obtenemos el mismo resultado, pero la segunda es mucho mas rápida que la primera, ya que no tiene que hacer la concatenación, si no que lo que tiene en buffer es lo que imprimirá.

 

Ejemplos como el anterior pueden determinar el rendimiento de nuestra aplicación, y claro sin mencionar los algoritmos complejos donde decimos “con que funcione me basta”.

 

Entonces antes de repartir culpa al servidor físico, red, base de datos, etc. revisemos nuestro código y seamos mas consientes.

Y recuerden no es una lucha entre Rendimiento vs Escalabilidad si no un trabajo en quipo de ambas.

Leave a Reply

Your email address will not be published. Required fields are marked *