Weighted Routing es un mecanismo de enrutamiento de tráfico donde las solicitudes entrantes se distribuyen a un conjunto de destinos (servidores, instancias de servicio, regiones) de acuerdo con un peso asignado a cada uno. Este peso es un valor numérico que representa la proporción relativa del tráfico que un destino debe recibir. Por ejemplo, si el destino A tiene un peso de 3 y el destino B tiene un peso de 1, el destino A recibirá aproximadamente tres veces más tráfico que el destino B. Este método permite una distribución no uniforme del tráfico, a diferencia de un Round Robin simple, que distribuye el tráfico de manera equitativa.
En el mundo real, Weighted Routing es ampliamente implementado en diversas capas de la infraestructura. Los Load Balancers, como AWS Elastic Load Balancing (ELB) con sus Application Load Balancers (ALB) y Network Load Balancers (NLB), o NGINX Plus, permiten configurar pesos para dirigir el tráfico a diferentes grupos de instancias. Los sistemas de DNS, como Amazon Route 53 o Google Cloud DNS, ofrecen Weighted Routing para dirigir el tráfico a diferentes endpoints o regiones geográficas, útil para A/B testing o despliegues canary. Service Meshes como Istio o Linkerd también utilizan Weighted Routing para controlar la distribución del tráfico entre diferentes versiones de microservicios, facilitando despliegues progresivos y rollbacks.
Para un Arquitecto de Sistemas, Weighted Routing es una herramienta estratégica fundamental. Permite gestionar la capacidad y la resiliencia de manera eficiente: se pueden asignar pesos más altos a servidores con mayor capacidad de procesamiento o a regiones con menor latencia. Es crucial para estrategias de despliegue como Canary Releases o Blue/Green Deployments, donde se dirige un pequeño porcentaje de tráfico a una nueva versión para monitorear su comportamiento antes de un despliegue completo. Los trade-offs incluyen la complejidad de la configuración y el monitoreo, ya que una asignación de pesos incorrecta puede llevar a la sobrecarga de ciertos destinos o a una distribución ineficiente de los recursos. La elección de los pesos debe basarse en métricas de rendimiento y capacidad para optimizar la experiencia del usuario y la utilización de la infraestructura.