La escalabilidad
La escalabilidad es en telecomunicaciones y en
ingeniería informática, es la propiedad anhelada de una red, sistema, o proceso,
que muestra su destreza para operar el incremento continuo de trabajo con
fluidez, o muestra la preparación que tiene para crecer manteniendo su calidad
en todos los servicios. Generalmente podemos definir la escalabilidad como la
capacidad que tiene un sistema informático de modificar su configuración o su
tamaño, para ajustarse a los cambios. Podemos citar el ejemplo de una empresa
cualquiera que tienen una red de usuarios vía Internet, es lógico que la empresa
quiera tener un sistema que le permita trabajar con los clientes actuales, pero
también con los posibles clientes, teniendo la oportunidad de cambiar la
configuración si así fuese oportuno hacerlo.
Al tratar de definir la escalabilidad como una propiedad de los
sistemas, resulta un poco complicado, específicamente se hace necesaria la
definición de algunos requerimientos particulares de la escalabilidad en las
dimensiones que se considere de gran importancia. Es un ejemplar bastante
significativo en las bases de datos, los sistemas
electrónicos, redes y ruteadores. A un sistema pasa a ser lo
que se le llama escalable cuando su rendimiento es mejorado, al sumarle
capacidad hardware y este mejora en proporción a la capacidad añadida.
-
Dimensiones. La escalabilidad de un sistema se puede medir en distintas dimensiones.
-
Escalabilidad en carga. Esto se hace más fácil mediante un sistema distribuido, podemos ampliar y reducir los recursos con mayor facilidad para adecuar las cargas ya sean pesadas o ligeras según sea necesario.
-
Escalabilidad geográfica. Un sistema es escalable geográficamente cuando su uso y sus ventajas se conservan sin que afecte la distancia de los usuarios.
-
Escalabilidad administrativa. Este debe de manejarse con facilidad sin importar las organizaciones que necesiten compartir un solo sistema distribuido.
-
Escalada verticalmente. También se dice escala hacia arriba, quiere decir que en un solo nodo del sistema es donde se han agregado más recursos. Ejemplo, añadir memoria a un disco duro de una computadora.
-
Escalada horizontalmente. Quiere decir que se agregan más nodos a un sistema. Ejemplo, agregar una nueva computadora a un programa de aplicación para espejo
Ejemplos
-
Un sistema de procesamiento y transacción en línea o un sistema administrador de base de datos escalable se puede actualizar para procesar más servicios sumándole dispositivos y almacenamiento, que pueden implementarse con facilidad por medio de los procesadores nuevos.
-
Un protocolo enrutador se considera como escalable con relación al tamaño de la red, si el tamaño de la tabla enrutadora, aumenta en cada nodo, como una cota superior asintótica (Log N).
-
Una aplicación de software se llama escalable, si cuando se aumentan los procesadores donde se confecciona, aumenta su rendimiento proporcionalmente. [ Equipo arquitectura y construcción de ARQHYS.com ].
La escalabilidad debe formar parte del proceso de diseño porque no es una característica separada que se pueda agregar después. Al igual que con otras funciones de aplicación, las decisiones que se tomen durante las primeras fases de diseño y codificación determinarán en gran medida la escalabilidad de la aplicación.La escalabilidad de una aplicación requiere una pertenencia equilibrada entre dos dominios distintos, software y hardware. Puede avanzar grandes pasos que aumenten la escalabilidad de un dominio sólo para sabotearlos cometiendo errores en el otro. Por ejemplo, la creación de un grupo de servidores Web con equilibrio de carga no beneficiará una aplicación Web que se ha diseñado para ejecutarse un solo equipo. De igual modo, el diseño de una aplicación altamente escalable y su implementación en equipos conectados a una red con poco ancho de bada no controlará bien las cargas pesadas cuando se sature el tráfico en la red.Puesto que la escalabilidad no es un problema de diseño de las aplicaciones independientes, aquí se tratan las aplicaciones distribuidas. Las aplicaciones distribuidas están también un paso más allá de las tradicionales aplicaciones de cliente-servidor. Las aplicaciones distribuidas son aplicaciones que están diseñadas como aplicaciones de n niveles. La arquitectura de estas aplicaciones distribuidas favorece el diseño de aplicaciones escalables compartiendo recursos, como bases de datos y componentes empresariales.Escalar en vertical
El escalado en vertical es el término que más se utiliza para lograr escalabilidad utilizando software mejor, más rápido y más caro. El escalado incluye agregar más memoria, más procesadores o procesadores más rápidos o, simplemente, migrar la aplicación a un único equipo más potente. Normalmente, este método permite un aumento en la capacidad sin requerir cambios en el código fuente. Desde el punto de vista administrativo, las cosas permanecen igual puesto que sigue habiendo un único equipo que administrar.Escalar en verticalActualizar un componente de hardware en un equipo sólo mueve el limite de capacidad de procesamiento de un lado a otro. Por ejemplo, una máquina que está al 100 % de uso de la CPU podría mejorar su capacidad agregando otra CPU. Sin embargo, la limitación puede pasar de la CPU a la memoria del sistema. Agregar CPU no aporta rendimiento en un modelo lineal. En su lugar, el rendimiento va disminuyendo cada vez que se agrega un procesador adicional. Para equipos con configuraciones de varios procesadores simétricos (SMP), cada procesador adicional produce una sobrecarga del sistema. Por tanto, un equipo con cuatro procesadores no obtendrá una mejora del 400% en capacidad sobre una versión con un único procesador. Una vez que haya actualizado todos los componentes de hardware al máximo de su capacidad, llegará el momento en que alcance el límite real de la capacidad de procesamiento del equipo. Llegado ese punto, el siguiente paso es escalar en vertical para moverse a otro equipo.Escalar en vertical conlleva también otros posibles problemas. El uso de un único equipo en el que basar una aplicación crea un único punto de error, lo que disminuye enormemente la tolerancia de errores del sistema. Si bien algunos métodos, como varias fuentes de alimentación, pueden implementar redundancia en un sistema de un único equipo, pueden resultar costosas.Escalar en horizontal
Una alternativa a escalar en vertical es escalar en horizontal. Escalar en horizontal aprovecha el ahorro que supone utilizar el hardware de PC activo para distribuir la carga de procesamiento en más de un servidor. Aunque el escalado en horizontal se logra utilizando muchos equipos, la colección funciona esencialmente como un único equipo. Al dedicar varios equipos a una tarea común, mejora la tolerancia de errores de la aplicación. Por supuesto, desde el punto de vista del administrador, escalar en horizontal presenta un desafío mayor de administración debido al mayor número de equipos.Escalar en horizontalLos desarrolladores y administradores utilizan una gran variedad de técnicas de equilibrio de carga para escalar en horizontal con la plataforma Windows. El equilibrio de carga permite escalar un sitio en horizontal a través de un clúster de servidores, facilitando la adición de capacidad agregando más servidores duplicados. También proporciona redundancia, concediendo al sitio capacidad de recuperación de conmutación por error, de manera que permanece disponible para los usuarios incluso si uno o más servidores fallan (o si es preciso retirarlos del servicio para realizar labores de mantenimiento). El escalado en horizontal proporciona un método de escalabilidad que no se ve mermado por limitaciones de hardware. Cada servidor adicional proporciona una mejora casi lineal de la escalabilidad.La clave para escalar horizontalmente una aplicación con éxito es la transparencia de ubicación. Si alguna parte del código de la aplicación depende de saber qué servidor está ejecutando el código, no se ha logrado la transparencia de ubicación y será difícil el escalado en horizontal. Esta situación se denomina afinidad de ubicación. La afinidad de ubicación requiere cambios de código para escalar una aplicación en horizontal de un servidor a varios, lo que, en pocas ocasiones, constituye una opción económica. Si diseña la aplicación con transparencia de ubicación en mente, resulta más fácil escalarla en horizontal.