Problema y alcance
El gateway se ubica al frente de varias API. El tráfico puede multiplicarse por 20 en un minuto, mientras que las bases de datos, los motores de búsqueda y las dependencias de terceros tienen capacidades diferentes. Diseñe la clasificación de solicitudes, la admisión, las colas, el descarte de carga (load shedding), las respuestas degradadas y la recuperación. La autorización de negocio, un WAF completo y la ampliación de capacidad para una dependencia rota quedan fuera del alcance.
Qué evalúa el entrevistador
Distinguir la limitación de tasa (rate limiting) de la protección contra sobrecargas. La limitación de tasa generalmente restringe el tráfico por identidad a lo largo de una ventana de tiempo; el control de admisión decide si el trabajo puede consumir recursos reales utilizando la concurrencia, la antigüedad en la cola, el costo y el estado de salud de las dependencias. Las respuestas sólidas explican qué se descarta, por qué, cómo el trabajo de baja prioridad evita la inanición (starvation) y cómo la recuperación previene un pico de tráfico repentino.
Preguntas para aclarar
- ¿Qué solicitudes son críticas y cuáles pueden retrasarse, almacenarse en caché o aproximarse?
- ¿Se está protegiendo el gateway, una dependencia, un tenant o cada uno de los límites del sistema?
- ¿Cuánto tiempo puede esperar el trabajo y los clientes deben reintentar, hacer sondeos (polling) o aceptar un resultado vacío?
- ¿La capacidad debe ser equitativa entre tenants, regiones, API o clases de costo?
- ¿Qué códigos de estado, encabezados y métricas de decisión son visibles para los emisores de las solicitudes?
Marco de respuesta de 30 segundos
“Clasificaría las solicitudes mediante metadatos de rutas confiables, tenant y costo; luego realizaría verificaciones estrictas de concurrencia y presupuesto antes de colocar el trabajo aceptado en colas acotadas particionadas por prioridad y tenant. Un controlador ajusta la concurrencia objetivo a partir del trabajo en curso, la antigüedad en la cola, las tasas de error y las señales de las dependencias. Durante una sobrecarga, rechaza primero el trabajo reintentable o de bajo valor y reserva capacidad para las solicitudes críticas. Las operaciones almacenables en caché o aproximadas utilizan una ruta degradada, mientras que los rechazos incluyen tiempos de reintento. La recuperación utiliza un aumento gradual, concesiones (leases) y sondeos controlados para que los reintentos no generen una segunda sobrecarga”.
Diseño detallado paso a paso
El gateway valida el tamaño de la solicitud, el presupuesto de tiempo de espera (timeout) y la cuota del tenant; luego mapea la solicitud a las etiquetas criticality, cost, retryability y dependency. La configuración de rutas confiables proporciona las etiquetas; los clientes no pueden autodeclarar su prioridad. El tráfico de salud y de administración utiliza un grupo reservado para que el tráfico de datos no pueda agotar el plano de control.
Mantenga límites de trabajo en curso, límites de cola y presupuestos de timeout por API y dependencia. Los semáforos o concesiones (leases) protegen los recursos reales; las colas están acotadas en lugar de ocultar la sobrecarga en una acumulación infinita. Consuma presupuesto solo después de la admisión y libere las concesiones en caso de cancelación o timeout. Las solicitudes de streaming necesitan presupuestos independientes de conexiones y bytes para que una sola transmisión larga no ocupe todos los slots disponibles.
El programador (scheduler) selecciona el trabajo según la prioridad, el peso del tenant y la antigüedad. El trabajo crítico recibe una reserva de concurrencia mínima; el trabajo de baja prioridad puede descartarse o retrasarse, aplicando envejecimiento (aging) para evitar la inanición. Una ráfaga de un tenant no puede tomar prestada la reserva de otro. Entre regiones, las decisiones rápidas locales pueden tolerar un error acotado en los contadores en lugar de agregar una frágil dependencia de coordinación global.
En cada ventana corta, un controlador ajusta la concurrencia objetivo: la reduce cuando la latencia p95, la antigüedad en la cola o los errores downstream cruzan los umbrales; la aumenta lentamente cuando está estable. El suavizado de señales y la histéresis evitan la oscilación en torno a los umbrales. Los reintentos de los clientes no son una señal de salud. Monitoree la amplificación de reintentos y limite el tráfico de retorno con Retry-After, jitter y presupuestos de reintento.
Elija el descarte de carga según la semántica de la solicitud. Las recomendaciones, analíticas y vistas previas pueden devolver resultados en caché o aproximados; las operaciones de escritura, pagos y cambios de permisos generalmente fallan rápido y requieren un reintento seguro. Una respuesta degradada incluye versión, marca de tiempo y frescura en lugar de simular que está completa. El gateway no debe descartar un efecto secundario no repetible que no comprende.
Cuando una dependencia agota su tiempo de espera o produce un error, un grupo de aislamiento limita sus conexiones, concurrencia y presupuesto de reintentos; un interruptor de circuito (circuit breaker) solo permite sondeos controlados. Las respuestas en caché y estáticas utilizan el grupo aislado. En caso de éxito, incremente el tráfico gradualmente. Registre la decisión de admisión, la versión de la política, el motivo del rechazo, la espera en cola y las señales de las dependencias para que una acumulación de respuestas 429 siga siendo diagnosticable.
Monitoree la tasa de admisión, la tasa de rechazo por prioridad y tenant, la antigüedad en cola más alta, el trabajo en curso, la latencia p95/p99, los errores downstream, la amplificación de reintentos, la frescura de respuestas degradadas y la pendiente de recuperación. Concilie los presupuestos de recursos con las conexiones, hilos, conexiones a bases de datos y trabajos en cola reales. Inyecte picos de tráfico, dependencias lentas, configuraciones de políticas erróneas, pérdida del controlador, particiones regionales y tormentas de reproducción de solicitudes (replay storms).
Ejemplo de respuesta de alta calidad
“En el gateway adjuntaría etiquetas confiables de criticidad, costo, capacidad de reintento y dependencias. Cada API y dependencia cuenta con concurrencia acotada, colas acotadas y capacidad reservada; el programador utiliza prioridad, peso de tenant y envejecimiento. Un controlador ajusta la concurrencia objetivo a partir de la latencia p95, la antigüedad en la cola y los errores downstream mediante histéresis. Bajo sobrecarga, rechaza primero el trabajo de bajo valor o reintentable y preserva la capacidad para escrituras críticas; las vistas previas pueden devolver datos en caché indicando su frescura.
Cada rechazo incluye un motivo estable, Retry-After y el ID de la solicitud. Los grupos de aislamiento, presupuestos de reintentos y sondeos controlados evitan fallas en cascada; la recuperación incrementa de forma gradual. Las métricas cubren equidad, amplificación de reintentos, frescura y la pendiente de recuperación, mientras que la inyección de fallas evalúa la pérdida del controlador, particiones regionales y tormentas de reproducción de solicitudes. El contrato consiste en ofrecer una latencia predecible en la ruta crítica bajo sobrecarga, no una espera infinita para cada solicitud”.
Errores comunes
- Agregar únicamente un limitador de QPS fijo → el cuello de botella puede ser de conexiones, CPU o una dependencia → combine señales de concurrencia, cola y estado de salud.
- Utilizar una cola sin límites → la latencia se dispara y las brechas de capacidad permanecen ocultas → acote la cola y rechace explícitamente.
- Dar la misma prioridad a todas las solicitudes → el trabajo de bajo valor desplaza a las rutas críticas → reserve capacidad semántica y aplique envejecimiento al trabajo.
- Permitir que los clientes autodeclaren la prioridad → los atacantes eluden la protección → clasifique a partir de políticas de rutas confiables.
- Reintentar sin un presupuesto durante una sobrecarga → la amplificación colapsa la dependencia → utilice presupuestos, jitter y
Retry-After. - Devolver datos obsoletos sin indicar la frescura → los usuarios los confunden con la verdad actual → incluya versión, marca de tiempo y origen.
- Liberar todo el tráfico de inmediato → las tormentas de reproducción sobrecargan la recuperación → incremente gradualmente con sondeos controlados.
- Exigir contadores globales exactos → la ruta de protección adquiere más dependencias propensas a fallos → tome decisiones locales rápidas con un margen de error acotado.
Preguntas de seguimiento y respuestas
Pregunta de seguimiento 1: ¿En qué se diferencia el control de admisión de la limitación de tasa?
La limitación de tasa restringe el tráfico de una identidad a lo largo de una ventana de tiempo. El control de admisión decide si el trabajo puede consumir recursos reales evaluando concurrencia, espera en cola, costo y salud de las dependencias. Pueden coexistir, pero un límite de QPS fijo no constituye admisión de recursos.
Pregunta de seguimiento 2: ¿Cómo se evita que los tenants de baja prioridad desplacen a los tenants críticos?
Reserve un grupo o cuota mínima para los tenants críticos y luego programe la capacidad compartida por peso. Asigne a cada tenant un presupuesto máximo para que las ráfagas no puedan tomar prestadas reservas indefinidamente.
Pregunta de seguimiento 3: ¿Por qué no encolar todo?
Superado el plazo de negocio (deadline), esperar genera timeouts y reintentos en lugar de trabajo útil. Una cola acotada hace explícito el exceso de demanda y proporciona retroalimentación a los emisores.
Pregunta de seguimiento 4: ¿Qué señales dirigen el controlador?
Como mínimo, la latencia p95/p99, el trabajo en curso, la antigüedad máxima en cola, la tasa de errores de las dependencias y la utilización de recursos. Aplique suavizado, agregue histéresis y separe el tráfico de reintentos del cliente de la demanda saludable.
Pregunta de seguimiento 5: ¿Puede degradarse una escritura crítica?
Solo si la semántica de negocio permite un encolamiento duradero seguido de una finalización asíncrona. Los pagos, permisos e inventario no pueden devolver un éxito falso; fallan de manera segura y se reintentan con idempotencia.
Pregunta de seguimiento 6: ¿Cómo se verifica que la recuperación no volverá a causar sobrecarga?
Inyecte recuperación de dependencias, acumulación de trabajo (backlog) y reintentos de clientes, observando luego la tasa de incremento, las reservas, la antigüedad en cola y los errores. Establezca un incremento máximo, un período de enfriamiento (cooldown) y un mecanismo de pausa manual.