trilha

AWS SAA-C03/07 - Desacoplamento e Integração2 min

Idempotência e Ordenação

Perguntas-guia

Responda com suas palavras antes de ler o resto da nota.

  • Que problema isso resolve?
  • Quando usar / quando NÃO usar?
  • Qual o principal trade-off (custo, latência, operação)?
  • Que sinal no enunciado aponta pra isso?
  • Com o que isso é confundido na prova?

Conceito

Sistemas distribuídos entregam mensagens pelo menos uma vez. Isso significa que duplicata não é exceção — é comportamento esperado, e a aplicação precisa lidar.

Onde a duplicata nasce

  • SQS Standard entrega at-least-once por design
  • Um consumidor lento estoura o visibility timeout e outro worker pega a mesma mensagem
  • Retry de rede após um ack perdido
  • SNS reentrega quando o subscriber devolve erro

Idempotência — como resolver

Operação idempotente produz o mesmo resultado ao ser executada várias vezes.

Técnica Como funciona
Tabela de deduplicação Guarda o ID processado em DynamoDB (com TTL) e ignora repetido
Chave natural Usar um ID de negócio como chave primária: a segunda escrita sobrescreve, não duplica
Escrita condicional ConditionExpression no DynamoDB só grava se ainda não existe
Operação naturalmente idempotente SET status = 'pago' em vez de saldo = saldo - 100

Ordenação

Mecanismo Garantia
SQS FIFO Ordem total dentro do Message Group ID
Kinesis Ordem dentro do shard (definido pela partition key)
SNS FIFO → SQS FIFO Ordem preservada no fan-out
SQS Standard Nenhuma garantia

O truque do Message Group ID: mensagens de grupos diferentes são processadas em paralelo, mas dentro de um grupo a ordem é estrita. Usar o ID do cliente como group ID dá ordem por cliente sem serializar a fila inteira.

Deduplicação nativa do FIFO

Janela de 5 minutos, por MessageDeduplicationId explícito ou por hash do corpo. Fora dessa janela, duplicata passa — por isso idempotência na aplicação continua necessária.

Trade-offs

FIFO resolve ordem e duplicata no nível da fila e cobra throughput: 300 msg/s (3.000 com batch). Idempotência na aplicação preserva o throughput ilimitado do Standard e transfere o trabalho pro código.

A prova costuma premiar idempotência no consumidor quando o enunciado quer evitar duplicata sem sacrificar throughput, e FIFO quando a ordem é o requisito explícito.

Sinais de prova

  • "Evitar processamento duplicado sem reduzir throughput" → idempotência (tabela de dedup no DynamoDB)
  • "Ordem das operações importa" → SQS FIFO
  • "Ordem por cliente, paralelismo entre clientes" → FIFO com Message Group ID = ID do cliente
  • "Mensagem processada duas vezes" → visibility timeout curto ou consumidor não idempotente
  • "Pagamento cobrado em duplicidade" → falta de chave de idempotência
  • "Ordem dentro do stream" → partition key do Kinesis

Relacionado


Parte de 07 - MOC Desacoplamento e Integração · Documentação AWS

Buscar

Busca por título, seção e texto das notas