Pon un timeout explícito en cada llamada, más corto que el plazo del propio llamante, y nunca confíes en el valor por defecto de la librería cliente. Reintenta solo operaciones idempotentes, con backoff exponencial más jitter y un número pequeño y acotado de intentos. Añade un circuit breaker para que los fallos repetidos fallen rápido en vez de encolarse, y define qué significa degradado: un valor cacheado, una respuesta parcial o un error claro en vez de una petición colgada.
Por qué lo preguntan los entrevistadores
Los reintentos son la forma clásica de que un incidente pequeño se convierta en una caída, así que esto comprueba si entiendes la amplificación de reintentos y la necesidad de un plazo global. El entrevistador quiere detalles: jitter, presupuestos, idempotencia como condición previa para reintentar y comportamiento de respaldo. Las respuestas que solo dicen añade reintentos y un circuit breaker sin hablar de amplificación sugieren que los conceptos se han leído, no operado.
Cómo estructurar tu respuesta
- Empieza por los timeouts y la propagación del plazo.
- Enuncia la condición previa para reintentar: que la operación sea idempotente.
- Explica backoff, jitter y presupuestos de reintento para evitar la amplificación.
- Define el comportamiento degradado que recibe realmente el usuario.
Ejemplo de respuesta
Lo primero es un timeout en cada llamada saliente, elegido a partir de la distribución de latencia y no al azar, y siempre más corto que el plazo que me han dado, para fallar antes de que mi llamante se rinda. Propago ese plazo restante hacia abajo, porque si no se sigue trabajando en una petición que ya no espera nadie. Los reintentos solo aplican a llamadas idempotentes, y aun así con backoff exponencial y jitter, limitados a dos o tres intentos. El motivo del límite es la amplificación: si cada capa reintenta tres veces, un hipo abajo se convierte en un orden de magnitud más de carga, que es como una dependencia lenta acaba en una caída completa. Por eso también me gusta un presupuesto de reintentos, donde los reintentos se limitan a un pequeño porcentaje del total de peticiones. Encima va un circuit breaker para que, en cuanto los fallos crucen un umbral, falle de inmediato durante un enfriamiento y sondee de vez en cuando, lo que evita apilar peticiones sobre algo que ya sufre. Y decido de antemano qué significa degradado; en un servicio de precios servíamos el último precio cacheado con una marca de antigüedad en vez de tumbar el checkout.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo decides el valor de timeout para una dependencia concreta?
- ¿Qué es la amplificación de reintentos y cómo la detectas en las métricas?
- ¿Cómo decide un circuit breaker cuándo volver a cerrarse?
Más preguntas para Desarrollador backend
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas