Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Kafka X SNS (SQSs)

Tenho dúvidas de quando devo usar o Kafka e quando usar o serviço da AWS SNS (com vários SQS). Parece que o Kafka é mais indicado para streamming e estatísticas de algo e o SQS seria para aplicações onde não preciso reprocessar as mensagens mais de uma vez, além do fato de ter que dar manutenção no Kafka (software e hardware). Seria isso ou teriam mais coisas a escolher um ou outro?

1 resposta
solução!

O equivalente ao Kafka na AWS é o Kinesis. Há também o Amazon MQ como um ActiveMQ gerenciado, além do próprio Kafka gerenciado. Cada um deles tem um conjunto de recursos diferentes, portanto depende do que você precisa.

  • Quantas mensagens você pretende processar por minuto? Qual é o tamanho dessas mensagens?
  • Você quer algum tipo de persistência, caso precise reprocessar algumas mensagens?
  • Haverá um único consumidor ou várias aplicações consumindo?

Kafka é um sistema distribuído de publicação e assinatura de mensagens. Ele foi projetado para uma taxa de transferência muito alta, processando milhares de mensagens por segundo. Ele suporta vários consumidores, que podem "acompanhar" o fluxo de mensagens. Você pode usá-lo como uma fila (usando grupos de consumidores) ou como um tópico.

SQS / SNS, por outro lado:

  • sem configuração / sem manutenção, totalmente gerenciado
  • uma fila (SQS) ou um tópico (SNS)
  • várias limitações (tamanho, duração de uma mensagem etc.)
  • taxa de transferência limitada: você pode fazer solicitações simultâneas e em lote, mas ainda assim obter uma taxa de transferência alta seria caro
  • O SNS tem notificações para email, SMS, SQS, HTTP embutido. Com o Kafka, você teria que codificar isso
  • nenhum conceito de "fluxo de mensagens"

No geral, eu diria que o SQS / SNS é mais simples de usar e adequado para tarefas e cargas de trabalho menos robustas com um volume menor de mensagens.