Escalabilidad

Ajustar Compartir Imprimir Citar

La escalabilidad es la propiedad de un sistema para manejar una cantidad creciente de trabajo mediante la adición de recursos al sistema.

En un contexto económico, un modelo de negocio escalable implica que una empresa puede aumentar las ventas con mayores recursos. Por ejemplo, un sistema de entrega de paquetes es escalable porque se pueden entregar más paquetes agregando más vehículos de entrega. Sin embargo, si todos los paquetes tuvieran que pasar primero por un solo almacén para su clasificación, el sistema no sería tan escalable, porque un almacén solo puede manejar una cantidad limitada de paquetes.

En informática, la escalabilidad es una característica de las computadoras, redes, algoritmos, protocolos de red, programas y aplicaciones. Un ejemplo es un motor de búsqueda, que debe admitir un número creciente de usuarios y el número de temas que indexa. Webscale es un enfoque de arquitectura informática que lleva las capacidades de las empresas de computación en la nube a gran escala a los centros de datos empresariales.

En matemáticas, la escalabilidad se refiere principalmente al cierre bajo la multiplicación escalar.

Ejemplos

El Sistema de Comando de Incidentes (ICS) es utilizado por las agencias de respuesta a emergencias en los Estados Unidos. ICS puede escalar la coordinación de recursos desde un incendio forestal de un solo motor en la carretera hasta un incendio forestal interestatal. El primer recurso en escena establece el mando, con autoridad para ordenar recursos y delegar responsabilidades (administrando de cinco a siete oficiales, quienes nuevamente delegarán hasta siete, y así sucesivamente a medida que crezca el incidente). A medida que se expande un incidente, más oficiales superiores asumen el mando.

Dimensiones

La escalabilidad se puede medir en múltiples dimensiones, como:

Dominios

Escalado horizontal (escalado) y vertical (escalado)

Los recursos se dividen en dos grandes categorías: horizontales y verticales.

Horizontal o escalado

Escalar horizontalmente (hacia afuera/adentro) significa agregar más nodos (o eliminar nodos) de un sistema, como agregar una nueva computadora a una aplicación de software distribuida. Un ejemplo podría implicar escalar horizontalmente de un servidor web a tres. Las aplicaciones informáticas de alto rendimiento, como el análisis sísmico y la biotecnología, escalan las cargas de trabajo horizontalmente para respaldar tareas que antes requerían costosas supercomputadoras. Otras cargas de trabajo, como las grandes redes sociales, superan la capacidad de la supercomputadora más grande y solo pueden ser manejadas por sistemas escalables. Explotar esta escalabilidad requiere un software para la gestión y el mantenimiento eficientes de los recursos.

Vertical o a escala

Escalar verticalmente (hacia arriba/hacia abajo) significa agregar recursos a (o eliminar recursos de) un solo nodo, lo que generalmente implica la adición de CPU, memoria o almacenamiento a una sola computadora.

Una mayor cantidad de elementos aumenta la complejidad de la administración, una programación más sofisticada para asignar tareas entre los recursos y manejar problemas como el rendimiento y la latencia entre los nodos, mientras que algunas aplicaciones no escalan horizontalmente.

Escalabilidad de la red

La virtualización de funciones de red define estos términos de manera diferente: escalar hacia adentro/hacia afuera es la capacidad de escalar agregando/eliminando instancias de recursos (p. ej., máquina virtual), mientras que escalar hacia arriba/hacia abajo es la capacidad de escalar cambiando los recursos asignados (p. ej., memoria/CPU). /capacidad de almacenamiento).

Escalabilidad de la base de datos

La escalabilidad de las bases de datos requiere que el sistema de la base de datos sea capaz de realizar un trabajo adicional con mayores recursos de hardware, como servidores, procesadores, memoria y almacenamiento adicionales. Las cargas de trabajo han seguido creciendo y las demandas de bases de datos han seguido su ejemplo.

Las innovaciones algorítmicas incluyen el bloqueo a nivel de fila y la partición de tablas e índices. Las innovaciones arquitectónicas incluyen arquitecturas de nada compartido y de todo compartido para administrar configuraciones de múltiples servidores.

Consistencia fuerte versus eventual (almacenamiento)

En el contexto del almacenamiento de datos de escalamiento horizontal, la escalabilidad se define como el tamaño máximo del clúster de almacenamiento que garantiza la consistencia total de los datos, lo que significa que solo hay una versión válida de los datos almacenados en todo el clúster, independientemente de la cantidad de copias de datos físicos redundantes.. Los clústeres que proporcionan redundancia "perezosa" mediante la actualización de copias de forma asíncrona se denominan "eventualmente coherentes". Este tipo de diseño de escalamiento horizontal es adecuado cuando la disponibilidad y la capacidad de respuesta tienen una calificación más alta que la consistencia, lo cual es cierto para muchos servicios de alojamiento de archivos web o cachés web (si desea la última versión, espere unos segundos para que se propague). Para todas las aplicaciones clásicas orientadas a transacciones, se debe evitar este diseño.

Muchos clústeres de almacenamiento de escalamiento horizontal de código abierto e incluso comerciales, especialmente aquellos construidos sobre redes y hardware de PC estándar, solo brindan consistencia eventual. Idem algunas bases de datos NoSQL como CouchDB y otras mencionadas anteriormente. Las operaciones de escritura invalidan otras copias, pero a menudo no esperan su reconocimiento. Las operaciones de lectura normalmente no verifican todas las copias redundantes antes de responder, lo que podría pasar por alto la operación de escritura anterior. La gran cantidad de tráfico de señales de metadatos requeriría hardware especializado y distancias cortas para manejarse con un rendimiento aceptable (es decir, actuar como un dispositivo de almacenamiento o base de datos no agrupados).

Siempre que se espere una gran consistencia de los datos, busque estos indicadores:

Los indicadores para diseños eventualmente consistentes (¡no aptos para aplicaciones transaccionales!) son:

Ajuste de rendimiento frente a escalabilidad de hardware

A menudo se recomienda centrar el diseño del sistema en la escalabilidad del hardware en lugar de en la capacidad. Por lo general, es más económico agregar un nuevo nodo a un sistema para lograr un mejor rendimiento que participar en el ajuste del rendimiento para mejorar la capacidad que puede manejar cada nodo. Pero este enfoque puede tener rendimientos decrecientes (como se analiza en la ingeniería de rendimiento). Por ejemplo: supongamos que el 70 % de un programa se puede acelerar si se paraleliza y se ejecuta en varias CPU en lugar de una sola. Si alfaes la fracción de un cálculo que es secuencial y 1-alfaes la fracción que se puede paralelizar, la aceleración máxima que se puede lograr mediante el uso de procesadores P se da de acuerdo con la Ley de Amdahl:{displaystyle {frac {1}{alpha +{frac {1-alpha }{P}}}}.}

Sustituyendo el valor de este ejemplo, usando 4 procesadores da{displaystyle {frac {1}{0.3+{frac {1-0.3}{4}}}}=2.105.}

Duplicar el poder de cómputo a 8 procesadores da{displaystyle {frac {1}{0.3+{frac {1-0.3}{8}}}}=2.581.}

Duplicar la potencia de procesamiento solo ha acelerado el proceso en aproximadamente una quinta parte. Si todo el problema fuera paralelizable, la velocidad también se duplicaría. Por lo tanto, agregar más hardware no es necesariamente el enfoque óptimo.

Escalado débil versus fuerte

La computación de alto rendimiento tiene dos nociones comunes de escalabilidad: