
Load Balancer System Design: Cómo hacer un diseño de sistema de manera más escalable 2025

Juan Correa
Desarrollador de Software Senior
En este artículo, aprenderás sobre el diseño de sistemas de balanceo de carga (load balancer system design). Cubriremos los conceptos básicos, tipos, ventajas, desventajas, métodos, algoritmos y estrategias de balanceo de carga.
En system design, comprender cómo funcionan los balanceadores de carga es fundamental para diseñar sistemas escalables y de alta disponibilidad.
Table of Contents
- Load Balancer System Design (Diseño de sistemas de balanceo de carga)
- Load Balancer System Design: Tipos de load balancers (balanceadores de carga)
- Ventajas y desventajas de load balancers (balanceadores de carga)
- Load balancing algorithms (algoritmos de balanceo de carga)
- Load balancer vs reverse proxy (balanceador de carga vs proxy inverso)
- Load balancer vs API gateway (balanceador de carga vs puerta de enlace de API)
- Siguientes pasos
Load Balancer System Design (Diseño de sistemas de balanceo de carga)

Un balanceador de carga (load balancer) es un dispositivo o software que distribuye el tráfico de red entre múltiples servidores o recursos para mejorar la disponibilidad, escalabilidad y rendimiento de una aplicación o sistema.
El balanceo de carga es esencial para garantizar que los servidores no se sobrecarguen y que los usuarios obtengan una experiencia de usuario óptima.
Existen diferentes tipos de balanceadores de carga, como hardware, software y en la nube, que se utilizan en sistemas distribuidos y aplicaciones web como veremos a continuación.
Load Balancer System Design: Tipos de load balancers (balanceadores de carga)
Los tipos de load balancers o balanceadores de carga se pueden clasificar en software, en la nube y de hardware, según cómo se implementan y administran.
Software load balancers (balanceadores de carga de software)
Un balanceador de carga de software es un programa o servicio que se ejecuta en un servidor para distribuir el tráfico de red entre múltiples servidores o recursos.
Los balanceadores de carga de software son fáciles de configurar, personalizar y escalar, y se utilizan en sistemas distribuidos y aplicaciones web.
Ejemplos de balanceadores de carga de software son:
Para poder usarlos correctamente, necesitas conocimientos de redes, servidores y sistemas operativos, así como habilidades de programación y scripting.
Cloud load balancers (balanceadores de carga en la nube)
Un balanceador de carga en la nube es un servicio de balanceo de carga que se ejecuta en la nube para distribuir el tráfico de red.
A diferencia de los balanceadores de carga de software, los balanceadores de carga en la nube son administrados y escalados automáticamente por el proveedor de la nube.
Ejemplos de balanceadores de carga en la nube son:
Para poder usarlos correctamente, necesitas conocimientos de la nube, servicios web y APIs, así como habilidades de configuración y administración de sistemas.
Hardware load balancers (balanceadores de carga de hardware)
Un balanceador de carga de hardware es un dispositivo físico que se coloca entre los clientes y los servidores para distribuir el tráfico de red.
También son conocidos como capa 4 (TCP/UDP) o capa 7 (HTTP/HTTPS) load balancers, porque operan en diferentes capas del modelo OSI.
Pueden manejar todo tipo de tráfico de red como HTTP, HTTPS, TCP, UDP, etc., y proporcionar funciones avanzadas como SSL offloading, caching, compression, etc.
Ejemplos de balanceadores de carga de hardware son F5 BIG-IP, Citrix NetScaler y Barracuda Load Balancer.
Los balanceadores de carga de hardware son costosos y se utilizan en entornos empresariales y de alta disponibilidad.
Para poder usarlos correctamente, necesitas conocimientos de redes, servidores y sistemas operativos, así como habilidades de configuración y administración de sistemas.
Como desarrollador de software, es muy poco probable que trabajes directamente con balanceadores de carga de hardware, pero es importante conocerlos para diseñar sistemas escalables y de alta disponibilidad.
Tabla 1: Comparativa de los diferentes tipos de Load Balancers
| Característica | Load Balancer de Software | Load Balancer en la Nube | Load Balancer de Hardware |
|---|---|---|---|
| Implementación | Programa o servicio ejecutado en un servidor | Servicio administrado por un proveedor de nube | Dispositivo físico colocado entre clientes y servidores |
| Costo | Bajo | Variable (basado en uso) | Alto |
| Flexibilidad | Alta | Alta | Baja |
| Escalabilidad | Alta, depende de los recursos del servidor | Automática, gestionada por el proveedor | Limitada por el hardware |
| Rendimiento | Moderado | Alto | Muy alto |
| Mantenimiento | Requiere conocimiento técnico y configuración manual | Mantenimiento gestionado por el proveedor | Requiere conocimientos técnicos avanzados |
| Uso típico | Sistemas distribuidos, aplicaciones web | Aplicaciones web, servicios en la nube | Entornos empresariales, alta disponibilidad |
| Conocimientos necesarios | Redes, servidores, sistemas operativos, scripting | Servicios web, APIs, configuración en la nube | Redes, servidores, sistemas operativos, hardware |
Software VS Hardware Load Balancers (Balanceadores de carga de software vs hardware)
Si te preguntas cuál es mejor entre los balanceadores de carga de software y hardware, la respuesta depende de varios factores como:
- Escala y rendimiento
- Costo y presupuesto
- Mantenimiento y soporte
- Flexibilidad y personalización
- Integración y compatibilidad
Normalmente, los balanceadores de carga de hardware son más rápidos, confiables y seguros que los balanceadores de carga de software, pero también son más costosos y difíciles de configurar.
Por otro lado, los balanceadores de carga de software son más flexibles, fáciles de configurar y económicos, pero pueden no ser tan rápidos, confiables y seguros como los balanceadores de carga de hardware.
El tamaño de la empresa es un factor importante a considerar porque las empresas más grandes y con más tráfico suelen optar por balanceadores de carga de hardware, mientras que las empresas más pequeñas y con menos tráfico suelen optar por balanceadores de carga de software.
Ventajas y desventajas de load balancers (balanceadores de carga)
Las ventajas de los balanceadores de carga son:
- Mejora la disponibilidad y escalabilidad.
- Distribuye el tráfico de red de manera equitativa.
- Aumenta el rendimiento y la velocidad de respuesta.
- Reduce la carga de los servidores y el tiempo de inactividad.
- Proporciona redundancia y tolerancia a fallos.
- Facilita la administración y el monitoreo del sistema.
- Pueden proteger contra ataques DDoS y otros ataques.
- Pueden proporcionar funciones avanzadas como SSL offloading, caching, compression, etc.
Las desventajas de los balanceadores de carga son:
- Pueden ser costosos y difíciles de configurar.
- Pueden ser un punto único de fallo y un cuello de botella.
- Pueden introducir latencia y degradar el rendimiento.
- Pueden requerir mantenimiento y actualizaciones periódicas.
- Pueden no ser compatibles con todas las aplicaciones y protocolos.
- Pueden no ser escalables y flexibles para entornos cambiantes.
En general, los beneficios de los balanceadores de carga superan a los inconvenientes, pero es importante tener en cuenta las limitaciones y consideraciones al diseñar sistemas de balanceo de carga.
Probablemente, los load balancers de la nube sean la mejor opción para la mayoría de las aplicaciones y sistemas, ya que ofrecen una combinación de escalabilidad, flexibilidad y facilidad de uso.
Principalmente para aplicaciones web y servicios en la nube, los balanceadores de carga en la nube son la mejor opción para garantizar la disponibilidad, escalabilidad y rendimiento de los sistemas.
Load balancing algorithms (algoritmos de balanceo de carga)
Los algoritmos de balanceo de carga (también conocidos como estrategias o métodos de balanceo de carga) son métodos utilizados para distribuir el tráfico de red entre los servidores de manera equitativa y eficiente.
Pueden clasificarse en algoritmos de balanceo de carga estáticos y dinámicos, según cómo se asigna el tráfico a los servidores.
Los algoritmos de balanceo de carga estáticos asignan el tráfico de red a los servidores en función de un criterio fijo, mientras que los algoritmos de balanceo de carga dinámicos asignan el tráfico de red a los servidores en función de un criterio variable.
Por ejemplo, los algoritmos de balanceo de carga dinámicos toman en cuenta el estado actual de los servidores, como la carga, la capacidad, la disponibilidad, el tiempo de respuesta, etc., para tomar decisiones en tiempo real.
Tabla 2: Comparativa de los diferentes algoritmos de balanceo de carga
| Algoritmo | Tipo de Balanceo | Descripción |
|---|---|---|
| Round Robin (RR) | Estático | Distribuye el tráfico de manera secuencial entre los servidores. |
| Weighted Round Robin (WRR) | Estático | Similar a Round Robin, pero asigna pesos a los servidores según su capacidad. |
| Least Connections (LC) | Dinámico | Distribuye el tráfico al servidor con la menor cantidad de conexiones activas. |
| Weighted Least Connections (WLC) | Dinámico | Variante de Least Connections que asigna pesos a los servidores según su capacidad. |
| IP Hash (IPH) | Dinámico | Distribuye el tráfico en función de la dirección IP del cliente. |
| URL Hash (URLH) | Dinámico | Distribuye el tráfico en función de la URL solicitada por el cliente. |
| Random (RND) | Estático | Distribuye el tráfico de manera aleatoria entre los servidores. |
| Least Response Time (LRT) | Dinámico | Distribuye el tráfico al servidor con el menor tiempo de respuesta. |
| Least Bandwidth (LBW) | Dinámico | Distribuye el tráfico al servidor con el menor ancho de banda utilizado. |
| Custom (CUS) | Personalizado | Permite implementar algoritmos personalizados adaptados a necesidades específicas. |
Veamos cada uno de ellos en detalle:
Round Robin (RR)
El método de Round Robin (RR) es un método de balanceo de carga estático que distribuye el tráfico de red de manera equitativa entre los servidores en un orden secuencial.
Los casos de uso de Round Robin (RR) son:
- Cuando los servidores tienen la misma capacidad de procesamiento.
- Cuando los servidores tienen la misma carga de trabajo.
- Cuando los servidores tienen la misma latencia de red.
- Cuando los servidores tienen la misma disponibilidad.
- Cuando los servidores tienen el mismo tiempo de respuesta.
No deberías usarlo si los servidores tienen diferentes capacidades de procesamiento, carga de trabajo, latencia de red, disponibilidad o tiempo de respuesta.
Weighted Round Robin (WRR)
El método de Weighted Round Robin (WRR) es una variante del método de Round Robin (RR) que asigna pesos a los servidores en función de su capacidad de procesamiento, carga de trabajo, latencia de red, disponibilidad o tiempo de respuesta.
Es útil para equilibrar la carga entre los servidores de manera proporcional y eficiente, pero puede ser más complicado y costoso de implementar.
Los casos de uso de Weighted Round Robin (WRR) son:
- Cuando los servidores tienen diferentes capacidades de procesamiento.
- Cuando los servidores tienen diferentes cargas de trabajo.
- Cuando los servidores tienen diferentes latencias de red.
- Cuando los servidores tienen diferentes disponibilidades.
Un ejemplo de Weighted Round Robin (WRR) es que ajusta los pesos de los servidores en tiempo real en función de su estado actual.
Pero también puede ser más complicado y costoso de implementar, ya que requiere analizar y procesar los servidores de manera dinámica y en tiempo real.
Least Connections (LC)
El método de Least Connections (LC) distribuye el tráfico de red al servidor con la menor cantidad de conexiones activas.
Es eficaz para equilibrar la carga entre los servidores y evitar la sobrecarga de los servidores, pero no tiene en cuenta la capacidad de respuesta de los mismos.
Los casos de uso de Least Connections (LC) son:
- Cuando los servidores tienen diferentes capacidades de procesamiento.
- Cuando los servidores tienen diferentes cargas de trabajo.
- Cuando los servidores tienen diferentes latencias de red.
- Cuando los servidores tienen diferentes disponibilidades.
- Cuando los servidores tienen diferentes tiempos de respuesta.
No deberías usarlo si los servidores tienen la misma capacidad de procesamiento, carga de trabajo, latencia de red, disponibilidad o tiempo de respuesta.
Weighted Least Connections (WLC)
El método de Weighted Least Connections (WLC) es una variante del método de Least Connections (LC) que asigna pesos a los servidores en función de su capacidad de procesamiento, carga de trabajo, latencia de red, disponibilidad o tiempo de respuesta.
Los pesos significan que los servidores con menos conexiones activas recibirán más tráfico que los servidores con más conexiones activas.
Ejemplo de un peso de 2 significa que el servidor con 2 conexiones activas recibirá el doble de tráfico que el servidor con 1 conexión activa.
Pero suele ser más complicado y costoso de implementar por los cálculos y ajustes necesarios.
Otra desventaja es que puede introducir latencia y degradar el rendimiento si no se configura correctamente.
IP Hash (IPH)
El método de IP Hash (IPH) distribuye el tráfico de red en función de la dirección IP del cliente, lo que garantiza que el mismo cliente siempre sea dirigido al mismo servidor.
Es útil para aplicaciones que requieren persistencia de sesión o estado, como aplicaciones de comercio electrónico, juegos en línea, redes sociales, etc.
Los casos de uso de IP Hash (IPH) son:
- Cuando los servidores requieren persistencia de sesión o estado.
- Cuando los servidores requieren almacenamiento en caché o memoria.
- Cuando los servidores requieren personalización o configuración.
- Cuando los servidores requieren seguimiento o análisis.
Un ejemplo de IP Hash (IPH) es el método de Sticky Sessions o Session Affinity, que mantiene la conexión del cliente con el mismo servidor durante toda la sesión.
URL Hash (URLH)
El método de URL Hash (URLH) es parecido al método de IP Hash (IPH), pero distribuye el tráfico de red en función de la URL solicitada por el cliente en lugar de la dirección IP del cliente.
La ventaja de URL Hash (URLH) respecto a IP Hash (IPH) es que permite distribuir el tráfico de manera más equitativa y eficiente, ya que las URL son más específicas y únicas que las direcciones IP.
Pero también puede ser más complicado y costoso de implementar, ya que requiere analizar y procesar las URL de manera dinámica y en tiempo real.
Los casos de uso de URL Hash (URLH) son:
- Cuando los servidores requieren distribución equitativa y eficiente.
- Cuando los servidores requieren personalización o configuración.
- Cuando los servidores requieren seguimiento o análisis.
Un ejemplo de URL Hash (URLH) es el método de Path-Based Routing o Content-Based Routing, que dirige el tráfico a diferentes servidores en función de la URL solicitada por el cliente.
Random (RND)
El método de Random (RND) distribuye el tráfico de red de manera aleatoria entre los servidores. Es útil para evitar patrones predecibles y distribuir la carga de manera uniforme.
La desventaja de Random (RND) es que puede no ser tan eficiente como otros métodos de balanceo de carga, ya que no tiene en cuenta la capacidad de respuesta de los servidores.
Least Response Time (LRT)
El método de Least Response Time (LRT) distribuye el tráfico de red al servidor con el menor tiempo de respuesta.
La diferencia con Least Connections (LC) es que tiene en cuenta el tiempo de respuesta de los servidores en lugar de la cantidad de conexiones activas.
Esto permite además de equilibrar la carga, mejorar el rendimiento y la velocidad de respuesta de los servidores, lo que es útil para aplicaciones y sistemas sensibles al tiempo.
El costo de implementación y mantenimiento de Least Response Time (LRT) puede ser más alto que otros métodos de balanceo de carga, ya que requiere analizar y procesar los servidores considerando tanto la carga como el tiempo de respuesta.
Least Bandwidth (LBW)
El método de Least Bandwidth (LBW) distribuye el tráfico de red al servidor con el menor ancho de banda utilizado.
A diferencia de Least Connections (LC) y Least Response Time (LRT), tiene en cuenta el ancho de banda de los servidores en lugar de la cantidad de conexiones activas o el tiempo de respuesta.
Esto permite además de equilibrar la carga, optimizar el uso del ancho de banda de los servidores, lo que es útil para aplicaciones y sistemas sensibles al ancho de banda.
El ancho de banda significa la cantidad de datos transferidos por segundo entre los servidores y los clientes, por lo que es importante optimizar su uso y evitar su desperdicio.
Un ejemplo de cálculo de ancho de banda es la tasa de bits por segundo (bps) o la tasa de transferencia por segundo (tps), que mide la velocidad de la conexión entre los servidores y los clientes.
Así podemos decir que una conexión tiene un ancho de banda de 1 Gbps o una tasa de transferencia de 100 Mbps, lo que significa que puede transferir 1 gigabit o 100 megabits por segundo.
Es un recurso limitado y costoso, por lo que es importante optimizar su uso y evitar su desperdicio.
Imagina que tienes un servidor con un ancho de banda de 1 Gbps y otro servidor con un ancho de banda de 100 Mbps, y ambos tienen la misma carga de trabajo y tiempo de respuesta.
Si usas Least Bandwidth (LBW), el tráfico se dirigirá al servidor con 100 Mbps en lugar del servidor con 1 Gbps, lo que optimizará el uso del ancho de banda y evitará su desperdicio.
Custom (CUS)
El método de Custom (CUS) es un método de balanceo de carga personalizado que se adapta a las necesidades específicas de los servidores y los clientes.
Puedes implementar tus propios algoritmos y estrategias de balanceo de carga en función de tus requisitos y restricciones, lo que te permite optimizar el rendimiento y la eficiencia de los servidores.
Pero si no tienes experiencia en balanceo de carga, es recomendable utilizar algoritmos y estrategias estándar como Round Robin (RR), Least Connections (LC), IP Hash (IPH), etc.
Imagina que cometes un error en tu algoritmo personalizado y sobrecargas un servidor o degradas el rendimiento de un sistema crítico, lo que puede causar problemas graves y costosos.
Aquí los errores pueden ser costosos y difíciles de solucionar, por lo que es importante tener cuidado y precaución al implementar algoritmos y estrategias personalizadas.
Ahora que conoces los algoritmos de balanceo de carga, puedes elegir el más adecuado para tus servidores y clientes, y optimizar el rendimiento y la eficiencia de tus sistemas.
Load balancer vs reverse proxy (balanceador de carga vs proxy inverso)
Hasta ahora hemos hablado de los balanceadores de carga, pero también es importante mencionar los proxies inversos, ya que ambos se utilizan para distribuir el tráfico de red.
Un proxy inverso (reverse proxy) es un servidor o servicio que actúa como intermediario entre los clientes y los servidores, y redirige el tráfico de red a los servidores en función de reglas y políticas.
Son útiles para proteger los servidores, ocultar la topología de red, acelerar el rendimiento, optimizar el ancho de banda, etc.
También pueden proporcionar funciones avanzadas como SSL offloading, caching, compression, etc., que mejoran la seguridad, la velocidad y la eficiencia de los sistemas.
Un Load balancer se enfoca en distribuir el tráfico de red entre los servidores en base a algoritmos de balanceo de carga, mientras que un Reverse proxy se enfoca en redirigir el tráfico de red entre los clientes y los servidores en base a reglas y políticas.
Utiliza un Load balancer si necesitas equilibrar la carga entre los servidores, y un Reverse proxy si necesitas proteger los servidores, ocultar la topología de red, acelerar el rendimiento, optimizar el ancho de banda.
Load balancer vs API gateway (balanceador de carga vs puerta de enlace de API)
La gran diferencia entre un load balancer y un API gateway es que el primero se enfoca en distribuir el tráfico de red entre los servidores, mientras que el segundo se enfoca en redirigir el tráfico de red a las APIs.
Una API gateway (puerta de enlace de API) es un servidor o servicio que actúa como intermediario entre los clientes y los servidores, y redirige el tráfico de red a las APIs en función de reglas y políticas, típicamente utilizado en una arquitectura de microservicios.
Siguientes pasos
En este artículo, aprendiste sobre el diseño de sistemas de balanceo de carga (load balancer system design). Cubrimos los conceptos básicos, tipos, ventajas, desventajas, métodos, algoritmos y estrategias de balanceo de carga.
¿Qué tipo de load balancer crees que es el más adecuado para tu sistema? ¿Qué algoritmo de balanceo de carga prefieres usar y por qué?
Si deseas profundizar en el diseño de sistemas escalables y de alta disponibilidad, te recomiendo leer los siguientes artículos:
- System design components: Los componentes más importantes en diseño de sistemas
- System design introduction: Cómo empezar aunque no domines la arquitectura de software
- System design concepts: Los 10 conceptos más importantes que debes conocer
- System design roadmap: Mega guía completa de aprendizaje y preparación para entrevistas de diseño de sistemas