¿Qué es escalabilidad?

Escalabilidad
Jorg Greuel / Getty Images

Escalabilidad (scalability, en inglés) es un término usado en tecnología para referirse a la propiedad de aumentar la capacidad de trabajo o de tamaño de un sistema sin comprometer el funcionamiento y calidad normales del mismo. Cuando un sistema tiene esta propiedad, se le refiere comúnmente como “sistema escalable” (scalable system, en inglés) o, simplemente, escalable.

Esta propiedad (el que algo sea escalable) tiene medidas de éxito en función del contexto en que se aplica.

En programas de cómputo se dice que el sistema es escalable cuando puede aumentar el número de usuarios, de datos que procesa o de solicitudes que recibe, sin que se afecte significativamente su velocidad de respuesta.

Escalabilidad se puede aplicar también a la funcionalidad de un sistema. Si se le pueden agregar funciones nuevas con un esfuerzo mínimo, se dice que el sistema es escalable. Por otro lado, se puede decir que un sistema es escalable geográficamente si se le pueden agregar con facilidad nuevos puntos de acceso, que se encuentren en diversas localizaciones geográficas.

Un ejemplo muy sencillo de escalabilidad lo podemos ver con el sistema que maneja los dominios de Internet. ¿Cuántas páginas de Internet se crean al día? Muchas y sin embargo, cada vez que tecleas ese URL en tu navegador para visitar una página, esperas la misma velocidad de respuesta. Bueno, entonces se puede decir que el DNS (que es como se le conoce a dicho sistema) es escalable, ya que a pesar de que aumentan continuamente el numero de dominios, el desempeño del sistema no cambia de forma perceptible.

Otro ejemplo que está justo frente a nosotros es el de BitTorrent, un sistema P2P que independientemente del número de puntos que estén conectados, el sistema se balancea y responde sin afectarse su desempeño, por esto podemos decir que BitTorrent “escala bien”.

El último ejemplo que mencionaré es el de las bases de datos.

Una característica importante en bases de datos usadas en sistemas de cómputo grandes, es su capacidad para responder a búsquedas de información en una proporción aceptable con respecto a la cantidad de datos que almacenan. Una base de datos es escalable en la medida que pueda responder a diversas necesidades de manejo de datos: tamaño, distribución y número de consultas son algunos parámetros.

Hay dos tipos básicos de escalabilidad, en base al método que se usa para aumentar la capacidad de un sistema:

  • Escalabilidad vertical, que se refiere a actualizaciones o modernización de componentes existentes, por ejemplo aumentar el número de CPUs que tiene el servidor de un sitio web. Si un programa mejora al aumentar los recursos que puede utilizar, se dice que es escalable, a lo que se conoce también como escalabilidad de aplicación (application scalability).
  • Escalabilidad horizontal, que se refiere a aumentar el número de componentes, para usar el mismo ejemplo, en lugar de aumentar el número de CPUs, se aumenta el número de computadoras que sirven un sitio web. Es común que un sistema tenga definido un número máximo de computadoras a as que se puede escalar, a lo que se conoce como escalabilidad de tamaño (size scalability).

    No existe una regla sencilla o universal para determinar si escalabilidad vertical deba preferirse sobre escalabilidad horizontal. Se debe analizar las circunstancias de cada caso.