Integração de Aplicações com o Amazon SNS e SQS

No mundo da computação em nuvem, a comunicação entre aplicações é um dos pilares para garantir escalabilidade, resiliência e desempenho. A AWS oferece dois serviços fundamentais para isso: o Amazon Simple Notification Service (SNS) e o Amazon Simple Queue Service (SQS).

Esses dois serviços trabalham juntos para permitir integrações assíncronas e desacopladas, onde diferentes partes de um sistema trocam informações de forma eficiente, sem depender de conexões diretas ou simultâneas.

Neste artigo, você vai entender o que são o SNS e o SQS, como funcionam, as diferenças entre eles e como integrá-los para criar aplicações modernas e escaláveis na AWS.


O que é o Amazon SNS?

O Amazon Simple Notification Service (SNS) é um serviço de mensageria baseada em publicação e assinatura (pub/sub).

Em outras palavras, o SNS permite que uma aplicação publique mensagens em um “tópico”, e essas mensagens sejam entregues automaticamente a todos os assinantes (subscribers) desse tópico.

Os assinantes podem ser:

  • Fila SQS
  • Funções AWS Lambda
  • Endpoints HTTP/HTTPS
  • E-mails
  • SMS
  • Aplicativos móveis (via push notifications)

👉 Exemplo prático:
Um sistema de e-commerce pode publicar um evento “Pedido Concluído” em um tópico SNS.
Esse evento pode ser consumido simultaneamente por:

  • Uma função Lambda que envia o e-mail de confirmação;
  • Um sistema de estoque que reduz a quantidade de produtos disponíveis;
  • Um dashboard que atualiza métricas de vendas.

Tudo isso ocorre de forma assíncrona e sem dependência direta entre os sistemas.


O que é o Amazon SQS?

O Amazon Simple Queue Service (SQS) é um serviço de fila de mensagens totalmente gerenciado, que permite armazenar, transmitir e processar mensagens entre componentes de software.

Ele atua como um “intermediário” confiável: quando um serviço envia uma mensagem, ela é armazenada na fila até que outro serviço a receba e processe.

Existem dois tipos principais de filas SQS:

  1. Standard Queue:
    • Oferece alta taxa de transferência;
    • Pode entregar mensagens mais de uma vez e fora de ordem (eventual consistency).
  2. FIFO Queue (First-In-First-Out):
    • Garante ordem exata de processamento e entrega única (exactly-once).
    • Ideal para sistemas financeiros, logs ou ordens de transações.

👉 Exemplo prático:
Em uma aplicação de processamento de imagens, cada upload pode gerar uma mensagem na fila SQS.
Uma função Lambda (ou aplicação EC2) consome as mensagens uma por uma, processando as imagens de forma paralela e escalável.


Diferença entre SNS e SQS

CaracterísticaAmazon SNSAmazon SQS
Tipo de ComunicaçãoPublicação/Assinatura (Pub/Sub)Fila ponto a ponto
DestinatáriosMúltiplos assinantesUm único consumidor por mensagem
EntregaPush (SNS envia a mensagem)Pull (o consumidor busca a mensagem)
EscopoBroadcast (vários consumidores)Processamento individual
Casos de UsoNotificações, alertas, eventosFilas de processamento, jobs assíncronos

Embora pareçam serviços diferentes, SNS e SQS se complementam perfeitamente em arquiteturas distribuídas.


Integração entre SNS e SQS

A combinação de SNS + SQS é uma das práticas mais comuns na AWS para criar sistemas altamente desacoplados.

Veja como funciona:

  1. O SNS publica mensagens em um tópico.
  2. Esse tópico tem assinaturas de filas SQS.
  3. Cada SQS recebe uma cópia da mensagem e a armazena até que seja processada.

Isso permite, por exemplo, que várias aplicações diferentes consumam o mesmo evento em momentos distintos.

Exemplo Prático

Imagine um sistema de pedidos com três microserviços:

  • Serviço A (Pedidos): publica o evento no SNS.
  • Serviço B (Pagamentos): consome a mensagem da fila SQS “Pagamentos”.
  • Serviço C (Estoque): consome a mensagem da fila SQS “Estoque”.

Cada serviço processa o evento de forma independente, sem precisar conhecer diretamente os outros.


Passo a Passo: Configurando SNS e SQS na AWS

1. Criar um tópico SNS

  • No console AWS, vá até SNS → Topics → Create topic.
  • Escolha o tipo “Standard” e dê um nome (ex: notificacoes-pedidos).

2. Criar uma fila SQS

  • Vá até SQS → Create queue.
  • Escolha o tipo “Standard” e dê um nome (ex: fila-pagamentos).

3. Integrar a fila ao tópico

  • No SNS, vá até o tópico criado e clique em Create subscription.
  • Selecione o protocolo Amazon SQS e escolha a fila que você criou.

4. Testar

  • Publique uma mensagem no tópico SNS.
  • Verifique se ela aparece na fila SQS.

Pronto! Sua integração está funcionando.


Boas Práticas com SNS e SQS

  1. Desacople os sistemas: evite integrações diretas entre serviços.
  2. Implemente DLQs (Dead Letter Queues): capture mensagens que falharam no processamento.
  3. Monitore métricas: use CloudWatch para acompanhar o volume e falhas.
  4. Controle permissões IAM: garanta que apenas serviços autorizados possam publicar e consumir mensagens.
  5. Use FIFO quando necessário: preserve a ordem em sistemas críticos.
  6. Combine com Lambda: processe eventos automaticamente sem precisar de servidores.

Casos Reais de Uso

  • E-commerce: integração entre pedidos, pagamentos e logística.
  • IoT: envio de eventos de sensores para múltiplos consumidores.
  • Aplicações financeiras: filas de validação e auditoria de transações.
  • Processamento de dados: pipelines de mensagens entre diferentes serviços.

Conclusão: Comunicação eficiente e escalável com SNS e SQS

O Amazon SNS e o Amazon SQS são pilares essenciais para construir arquiteturas assíncronas e desacopladas na AWS.

Enquanto o SNS distribui mensagens para múltiplos destinos, o SQS garante o processamento confiável de cada evento — juntos, eles criam uma base sólida para aplicações modernas, escaláveis e resilientes.

Dominar esses serviços é fundamental para quem deseja projetar sistemas robustos e prontos para alta demanda na nuvem AWS.

“Domine novas habilidades e fique à frente no mundo digital que não para de evoluir.”

Publicar comentário