Load Shedding, o 'deslastre de carga', es una técnica de resiliencia en sistemas distribuidos diseñada para proteger la estabilidad y la disponibilidad de un servicio frente a una sobrecarga. En lugar de permitir que un sistema se sature completamente, lo que podría llevar a fallos en cascada o a una degradación severa del rendimiento para todos los usuarios, Load Shedding descarta deliberadamente una parte del tráfico entrante. Esto se hace para asegurar que los recursos restantes puedan procesar las solicitudes aceptadas de manera efectiva, manteniendo así un nivel de servicio aceptable para una porción de los usuarios o para las funcionalidades más críticas.
En el mundo real, Load Shedding se implementa en diversos sistemas y capas. Los API Gateways y los balanceadores de carga (como NGINX Plus o Envoy Proxy) pueden configurarse para aplicar Load Shedding basado en métricas como la latencia del backend, la utilización de la CPU o la memoria. Frameworks de microservicios como Netflix Hystrix (aunque en modo de mantenimiento, su filosofía es relevante) o Resilience4j en Java, ofrecen capacidades de circuit breaking y rate limiting que pueden actuar como formas de Load Shedding a nivel de servicio. Sistemas de bases de datos distribuidas o colas de mensajes también pueden implementar mecanismos internos para rechazar escrituras o lecturas cuando están bajo una presión extrema, protegiendo su propia integridad y disponibilidad.
Para un arquitecto, Load Shedding es una herramienta crucial para diseñar sistemas resilientes. La decisión de implementar Load Shedding implica un trade-off fundamental: se sacrifica la disponibilidad para una parte del tráfico o funcionalidad en favor de la estabilidad general del sistema. Es vital definir qué tráfico es menos crítico y puede ser descartado, y cómo comunicar este descarte a los clientes (ej. con códigos de estado HTTP 503 Service Unavailable). Un diseño efectivo de Load Shedding requiere monitoreo granular de la capacidad del sistema, políticas claras de priorización de solicitudes y mecanismos para ajustar dinámicamente el umbral de deslastre. Su implementación es clave para evitar costosos tiempos de inactividad y mantener la experiencia del usuario para las funcionalidades esenciales, incluso bajo condiciones de estrés extremo.