¿Qué es la escalabilidad?

Una aplicación tiene buena escalabilidad si puede mantener su rendimiento mientras aumenta su volumen de datos o solicitudes. Es decir, el rendimiento debe mantenerse estable para cualquier usuario individual mientras aumenta el número de usuarios.

Muestra Node.js como un marco que afirma tener una mejor escalabilidad que otros idiomas. Esto es una mierda de marketing. El rendimiento y la escalabilidad se logran mediante la arquitectura de la aplicación , no mediante una elección particular de lenguaje o marco.

Puede hacer una aplicación escalable en Node.js o Java o PHP o Ruby o Python o Perl o cualquier otro lenguaje que pueda nombrar. Mucha gente lo ha hecho.

Lo contrario también es cierto: puede escribir código basura en cualquier idioma y crear cuellos de botella en su arquitectura que perjudiquen la escalabilidad de su aplicación.

La elección del lenguaje o marco de programación debe basarse en mejorar la productividad del desarrollador al crear y mantener su aplicación. Definitivamente, hay algunos idiomas que están diseñados para ser más convenientes para cierto trabajo y, por lo tanto, le permiten ser más productivo en ese tipo de aplicación.

La escalabilidad es la capacidad de una aplicación para mantener su rendimiento a medida que aumentan la complejidad del problema (por ejemplo, el volumen de datos) y el hardware disponible.

La escalabilidad puede ser horizontal y vertical:

  • escala vertical significa aumento de CPU / GPU que comparten la misma memoria de trabajo (RAM). Esto es cuando compra CPU con más núcleos o pasa a la configuración de CPU de 2 vías, 4 vías u 8 vías del servidor. La escalabilidad no aborda el caso cuando mejora el poder de los núcleos existentes.
  • el escalado horizontal significa un aumento de los nodos de computación, generalmente conectados por una red rápida (aunque rápido, introduce latencia y retrasos de transmisión en comparación con el rendimiento de la lectura de datos directamente desde la RAM). En términos simples, esto significa comprar más servidores en su clúster.

La escalabilidad depende tanto de la arquitectura del hardware como del problema. Por ejemplo, computación sin (X), donde X es un vector grande, tiene una buena escalabilidad en casi cualquier plataforma. Por lo general, un aumento de la misma magnitud del tamaño del problema y la capacidad de computación producirá el mismo rendimiento. La ordenación es menos escalable y el procesamiento de transacciones (con bloqueo) es aún menos escalable.

Nodejs es una tecnología que, mediante la eliminación del bloqueo, hizo que el tiempo de procesamiento de una sola unidad de cálculo (llamado nodo de cálculo en la literatura, sin embargo, no tenga nada que ver con nodejs) cuando se usa el lenguaje JavaScript. Tiene una escalabilidad horizontal relativamente buena para problemas escalables, pero no escala problemas difíciles; para esto se requeriría un avance teórico primero. Aún así, nodejs no puede proporcionar una alternativa a MPI, Map Reduce (escala horizontal) u OpenMP (escala vertical), por ejemplo, en caso de resolver problemas científicos.

La isoeficiencia es una particularización del concepto de escalabilidad. Solo se relaciona con el problema algorítmico, no con la arquitectura del hardware (supuesto ideal o cercano al ideal).

No es el lenguaje de programación como nodej.js el responsable de la escalabilidad. La forma más común de lograr escalabilidad es

Escalabilidad horizontal: también se llama Escalar horizontalmente. Escalar significa eliminar más nodos y Escalar significa agregar más nodos. Aquí nodos significa agregar computadoras a una aplicación distribuida. Esto es posible ahora que los precios del hardware se han reducido.

Escalibilidad vertical: se llama escala hacia arriba y escala hacia abajo. Esto es para agregar o eliminar recursos de un solo nodo.

La escalabilidad se basa principalmente en las herramientas que usa, no en el lenguaje. Puedo hacer escalable cualquier aplicación compartiendo db’s y servidores de almacenamiento. Por ejemplo, tengo una aplicación laravel que es para un sitio y carga equilibrada. Tengo 5 servidores que ejecutan esta aplicación y un clúster para MySQL y uno para redis que comparten todas las aplicaciones.

La capacidad de manejar más y más usuarios.

El sistema escalable define un sistema que puede cambiar además de ofrecer el mejor rendimiento.

Escalabilidad