Pergunta de entrevista para Engenheiro de Nuvem

Como você projeta um consumidor para uma fila que garante entrega pelo menos uma vez?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Assuma que toda mensagem pode chegar mais de uma vez e torne o processamento idempotente. Derive uma chave estável da mensagem e ou verifique e registre em um armazenamento antes de agir, ou use uma escrita condicional para uma repetição virar operação nula. Defina o visibility timeout acima do seu pior caso de tempo de processamento, estenda para jobs longos, e mande mensagens para uma dead letter queue depois de algumas falhas, para mensagens envenenadas não travarem o progresso.

Por que os entrevistadores perguntam isso

Entrega duplicada é uma daquelas realidades que separam quem já rodou sistemas distribuídos de quem só leu sobre eles. O entrevistador quer idempotência como primeira resposta, expressa de forma concreta em vez de como palavra, mais detalhes operacionais como visibility timeout e dead letter queue. Tratar ordenação e falha parcial corretamente é o que transforma um consumidor que funciona em um consumidor confiável.

Como estruturar sua resposta

  • Aceite duplicatas como normais e ponha a idempotência no centro do projeto.
  • Dê um mecanismo concreto de idempotência, não só o termo.
  • Cubra visibility timeouts e trabalho de longa duração.
  • Trate mensagens envenenadas, retries com backoff e ordenação.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu parto do princípio de que toda mensagem vai chegar pelo menos duas vezes em algum momento, normalmente porque um consumidor foi lento e o visibility timeout expirou enquanto o trabalho já tinha sido commitado. Então o consumidor tem que ser idempotente, e eu quero isso concreto em vez de aspiracional. Normalmente é uma chave de idempotência tirada da mensagem, ou um id que o produtor definiu ou um hash do conteúdo relevante, registrada em uma tabela com uma restrição de unicidade dentro da mesma transação do trabalho. Se o insert conflita, a gente já fez isso, confirma e segue. Onde o efeito é uma escrita em um armazenamento, eu prefiro uma atualização condicional, para aplicar duas vezes chegar no mesmo estado. Operacionalmente, o visibility timeout tem que exceder o tempo de processamento realista mais lento, e para jobs genuinamente longos eu estendo a concessão conforme avanço em vez de definir um timeout global enorme. As falhas fazem retry com backoff exponencial e jitter, e depois de um número pequeno de tentativas a mensagem vai para uma dead letter queue com o erro anexado, para uma mensagem ruim nunca travar o resto.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como você lida com um efeito colateral que não dá para tornar idempotente, como mandar um e-mail?
  • Como você reprocessaria uma dead letter queue com segurança?
  • O que muda se você também precisar de ordenação estrita?

Mais perguntas para Engenheiro de Nuvem

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot