Pregunta de entrevista para Ingeniero de nube

¿Cómo diseñas un consumidor para una cola que garantiza entrega al menos una vez?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Da por hecho que cada mensaje puede llegar más de una vez y haz que el procesamiento sea idempotente. Deriva una clave estable del mensaje y, o bien la compruebas y la registras en un almacén antes de actuar, o usas una escritura condicional para que una repetición no haga nada. Fija el visibility timeout por encima de tu peor caso de tiempo de procesamiento, extiéndelo para trabajos largos, y manda los mensajes a una dead letter queue tras unos pocos fallos para que los mensajes envenenados no bloqueen el avance.

Por qué lo preguntan los entrevistadores

La entrega duplicada es una de esas realidades que separan a quien ha operado sistemas distribuidos de quien ha leído sobre ellos. El entrevistador quiere la idempotencia como primera respuesta, expresada de forma concreta y no como una palabra, más detalles operativos como los visibility timeouts y las dead letter queues. Manejar bien el orden y el fallo parcial es lo que convierte a un consumidor que funciona en uno fiable.

Cómo estructurar tu respuesta

  • Acepta los duplicados como algo normal y pon la idempotencia en el centro del diseño.
  • Da un mecanismo de idempotencia concreto, no solo el término.
  • Cubre los visibility timeouts y el trabajo de larga duración.
  • Maneja los mensajes envenenados, los reintentos con backoff y el orden.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Parto del supuesto de que todo mensaje llegará al menos dos veces en algún momento, normalmente porque un consumidor iba lento y el visibility timeout expiró cuando el trabajo ya estaba confirmado. Así que el consumidor tiene que ser idempotente, y quiero que eso sea concreto y no aspiracional. Normalmente es una clave de idempotencia sacada del mensaje, o un id que puso el productor o un hash del contenido significativo, registrada en una tabla con una restricción de unicidad dentro de la misma transacción que el trabajo. Si el insert entra en conflicto, esto ya lo hicimos, confirma y sigue. Cuando el efecto es una escritura en un almacén prefiero una actualización condicional, así aplicarla dos veces deja el mismo estado. En lo operativo, el visibility timeout tiene que superar el tiempo de procesamiento realista más lento, y para trabajos genuinamente largos extiendo el arrendamiento sobre la marcha en vez de fijar un timeout global enorme. Los fallos reintentan con backoff exponencial y jitter, y tras un número pequeño de intentos el mensaje va a una dead letter queue con el error adjunto, así un mensaje malo nunca bloquea al resto.

¿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 funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cómo manejas un efecto secundario que no puedes hacer idempotente, como enviar un correo?
  • ¿Cómo reprocesarías una dead letter queue de forma segura?
  • ¿Qué cambia si además necesitas orden estricto?

Más preguntas para Ingeniero de nube

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

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot