Load Balancer

Patrón arquitectónico

Cualquier aplicación diseñada para ser escalable requiere implementar mecanismos que le ayuden a agregar más poder de procesamiento de una forma fácil y que no afecta la operación. Por otro lado, las aplicaciones deben de estar diseñadas para ser robustas y con una alta disponibilidad, lo que quiere decir que si un servidor falla no debería de comprometer la operación. En este sentido, cuando una aplicación crece, eventualmente un solo servidor no podrá con la carga de trabajo, lo que nos obligará a requerir de un mayor poder de procesamiento.

Problemática

El principal problema que tienen las aplicaciones de hoy en día son las limitaciones del hardware, lo que hace imposible que un solo servidor sea capaz de atender todas las solicitudes, incluso si compramos el mejor servidor, llegar el momento en que este se vea rebasado por la gran cantidad de operaciones, lo que llevaría a un colapso del servidor. Pero entonces ¿si el hardware es limitado que podemos hacer? Una respuesta obvia es el escalamiento vertical el cual consiste en agregar más hardware al servidor actual, como más RAM, más procesador, más almacenamiento, etc.

Escalamiento vertical
Escalamiento vertical
tip

Nuevo concepto: Escalamiento Vertical

Término utilizado para hacer referencia al crecimiento del hardware existente, el cual consiste en agregar más procesador, almacenamiento o memoria RAM.

Pero el escalamiento vertical tiene un gran problema, por un lado, todo hardware tiene un límite de crecimiento, por lo que llegará un punto en el que ya no podremos crecer más, pero, por otro lado, toda nuestra aplicación depende de ese único servidor, por lo que, si llegara a fallar, toda la aplicación se afectaría.

Solución

Para solucionar este tipo de problema contamos con el escalamiento horizontal, el cual consiste en agregar más de un servidor a nuestro cluster, con la finalidad de que la carga de trabajo se divida en partes iguales entre todos los servidores del cluster, de esta forma, cuando necesitamos más poder de procesamiento, simplemente agregamos un nuevo servidor al cluster y dividimos la carga entre más servidores.

tip

Nuevo concepto: Cluster

El término clúster (del inglés cluster, que significa grupo o racimo) se aplica a los conjuntos o conglomerados de servidores unidos entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen un único servidor.

tip

Nuevo concepto: Escalamiento Horizontal

Es la capacidad de una aplicación para dividir el trabajo entre varios servidores de una red. Se dice que una aplicación es escalable horizontalmente si al agregar nuevos servidores al cluster, esta mejora su rendimiento.

Escalabilidad Horizontal
Escalabilidad Horizontal

En la imagen anterior podemos ver claramente el concepto de escalabilidad Horizontal, donde un cluster de servidores puede ser ampliado agregando más servidores, lo que mejora el rendimiento significativamente al dividir el trabajo entre más servidores.

Pero en este punto tenemos un problema, como le hacemos para que la carga de trabajo se divida entre todos los servidores de la aplicación, pues al final, cada servidor atenderá en diferente IP y puerto.

Conclusiones

Hemos analizado como el balance de cargas permite que las aplicaciones escalen de forma fácil y casi ilimitada, con tan solo agregar nuevos servidores al cluster y repartiendo la carga entre todos los servidores.

El balance de cargas es hoy en día algo indispensable en las aplicaciones modernas donde la disponibilidad es algo fundamental y la llegada de la nube, que permite aprovisionar rápidamente nuevos servidores que se agregan dinámicamente a la red.

Acerca de este libro

Introducción a la arquitectura de software

Todo lo que acabas de ver en este artículo es solo una pequeña parte del libro Introducción a la arquitectura de software, el libro más completo en español sobre arquitectura de software, donde cubrimos los temas más importantes para convertirte en un arquitecto de software profesional.

¿Quieres convertirte en arquitecto de software pero no sabes cuál es el camino adecuando? o simplemente no sabes que guía estudiar para convertirte en arquitecto de software, te invito a que veas mi libro:

Ver libro
Todos los derechos reservados ©
Reactive programming
LinkedinYoutubeTwitterFacebook

© 2021, Copyright - Oscar Blancarte. All rights reserved.