Desacoplamento com os serviços de mensagens da AWS

Desenvolvendo Aplicações na AWS

Ricardo Sueiras

Principal Technologist

Fundamentos do Amazon SQS

 

visão geral do sqs

  • Lida com picos de tráfego independentemente dos produtores.
  • Fila de mensagens gerenciada para comunicação assíncrona.
  • Produtores enviam mensagens para uma fila.
  • Consumidores recuperam mensagens da fila.
  • Mensagens ficam retidas até um consumidor buscá-las.
  • Retenção: 4 dias por padrão, 14 dias no máximo.
  • Consumidores consultam a fila e processam no próprio ritmo.
Desenvolvendo Aplicações na AWS

Visibilidade da mensagem

  • Uma mensagem fica invisível quando um consumidor a lê.
  • O tempo de visibilidade controla por quanto tempo ela fica oculta.
  • Se o processamento falhar e a mensagem não for excluída:
    • Ela volta a ficar visível.
    • Pode ser reprocessada.
  • Tempo de visibilidade: 30 segundos por padrão.
  • Máximo de 12 horas.

 

visibilidade da mensagem

Desenvolvendo Aplicações na AWS

Tamanho da mensagem

 

tamanho da imagem

  • Mensagens podem ter até 256KB.
  • A biblioteca SQS Extended Client permite mensagens maiores.
  • Armazena o payload grande no Amazon S3.
  • Envia um ponteiro para o S3 no payload da mensagem.
Desenvolvendo Aplicações na AWS

Short polling

  • A estratégia de polling afeta custo e eficiência.
  • Short polling é o padrão.
  • Consulta um subconjunto dos servidores do SQS e retorna na hora.
  • Pode retornar vazio, mesmo com mensagens disponíveis.
  • Gera mais chamadas à API e maior custo.

 

polling

Desenvolvendo Aplicações na AWS

Long polling

  • Long polling consulta todos os servidores do SQS.
  • Aguarda até 20 segundos por uma mensagem.
  • Elimina respostas vazias desnecessárias.
  • Reduz chamadas à API e o custo.

 

polling

Desenvolvendo Aplicações na AWS

Filas Standard

  • O SQS oferece dois tipos de filas.
  • Filas Standard:
    • Entrega pelo menos uma vez.
    • Ordenação best-effort.
    • Throughput quase ilimitado.

 

tipos de fila

Desenvolvendo Aplicações na AWS

Filas FIFO

 

tipos de fila

  • Filas FIFO:
    • Processamento exatamente uma vez.
    • Ordenação estrita das mensagens.
    • Desduplicação embutida.
  • Padrão de 300 TPS
    • Aumente para 3.000 com batching ou mais com modo de alto throughput.
  • Escolha o tipo pela necessidade:
    • Standard para escala e throughput.
    • FIFO para ordenação e desduplicação.
Desenvolvendo Aplicações na AWS

Tratando poison messages

 

dlq

  • Dead letter queues (DLQ) armazenam mensagens que falharam.
  • Uma mensagem vai para a DLQ ao exceder maxReceiveCount.
  • Evita tentar indefinidamente uma poison message.
  • A DLQ deve ter o mesmo tipo da fila de origem.
  • Movimente mensagens de volta para reprocessar.
Desenvolvendo Aplicações na AWS

Protegendo filas

 

protegendo o SQS

  • Criptografa em trânsito com HTTPS por padrão.
  • Criptografia no servidor, em repouso, usando AWS KMS.
  • Criptografe o payload no cliente com o AWS Encryption SDK.
  • Políticas do IAM controlam quem acessa filas do SQS.
  • Políticas baseadas em recurso dão controle granular por fila.
Desenvolvendo Aplicações na AWS

Fundamentos do Amazon SNS

  • Serviço pub/sub gerenciado.
  • Usa modelo de push.
  • Publicadores enviam mensagens para um tópico.
    • Tamanho máximo da mensagem: 256KB.
  • Consumidores assinam tópicos.
  • Assinantes recebem mensagens passivamente.

 

visão geral do sns

Desenvolvendo Aplicações na AWS

Escala

  • Suporta até 12,5 milhões de assinaturas por tópico.
  • Sem retenção de mensagens:
    • Mensagens se perdem se o assinante estiver indisponível.
    • Use DLQ ou assinante durável (fila SQS) para evitar perdas.
  • Distribui um único evento para muitos consumidores (fan-out).

 

escalando o sns

Desenvolvendo Aplicações na AWS

Filtragem de mensagens

  • O SNS suporta políticas de filtragem de mensagens.
  • Assinaturas recebem apenas o que importa para elas.
  • Sem filtro, a assinatura recebe todas as mensagens.
  • Filtros se aplicam na assinatura, não no tópico.

 

filtro

Desenvolvendo Aplicações na AWS

Lógica e avaliação de filtros

 

políticas de filtro

  • Filtros são definidos em JSON.
  • São comparados com atributos da mensagem.
  • Múltiplas condições são avaliadas como AND.
  • Vários valores na mesma condição são avaliados como OR.
  • Há várias operações de filtro:
    • String exata, numérica, prefixo, exclusão e faixa.
Desenvolvendo Aplicações na AWS

Segurança no SNS

 

segurança no sns

  • Criptografa dados em trânsito com HTTPS por padrão.
  • Criptografia no servidor, em repouso, usando AWS KMS.
    • Conceda ao SNS permissão para usar a chave KMS.
  • Políticas do IAM fornecem controle de acesso.
    • Definem quem pode publicar ou assinar um tópico.
Desenvolvendo Aplicações na AWS

Vamos praticar!

Desenvolvendo Aplicações na AWS

Preparing Video For Download...