AWS - Uma análise dos serviços de mensageria na nuvem: Amazon SQS, SNS, Kinesis e ActiveMQ.
Tags: aws, awssqs, awssns
Published: 2023-07-12 12:36:40

Este artigo técnico explora e compara os serviços de mensageria na nuvem oferecidos pela Amazon Web Services (AWS), incluindo o Amazon Simple Queue Service (SQS), Amazon Simple Notification Service (SNS), Amazon Kinesis e Apache ActiveMQ. Cada serviço possui características distintas e é adequado para diferentes casos de uso. Analisaremos as funcionalidades, recursos e benefícios de cada serviço, além de fornecer insights sobre quando e como usá-los para construir sistemas escaláveis e resilientes.

A mensageria na nuvem desempenha um papel fundamental na construção de arquiteturas de sistemas distribuídos, permitindo a comunicação assíncrona entre componentes e serviços. A AWS oferece uma variedade de serviços de mensageria para atender às necessidades de diferentes tipos de aplicativos e cargas de trabalho. Neste artigo, nos concentraremos em quatro serviços principais: Amazon SQS, SNS, Kinesis e ActiveMQ.

**Amazon Simple Queue Service (SQS).**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/emui00m168127wsfjwjc.png)

O Amazon SQS é um serviço de mensageria totalmente gerenciado e distribuído.
Ele segue o modelo de filas, onde as mensagens são armazenadas em filas antes de serem processadas pelos consumidores.
O SQS oferece duas opções de filas: Standard Queue e FIFO Queue.
As filas Standard fornecem entrega de mensagens pelo menos uma vez, o que significa que uma mensagem pode ser entregue duplicada em casos excepcionais. No entanto, as filas Standard oferecem a maior taxa de transferência.
As filas FIFO fornecem entrega de mensagens exatamente uma vez, garantindo que as mensagens sejam processadas na ordem em que foram recebidas.O SQS escala automaticamente para lidar com o aumento ou diminuição de demanda. Ele garante a durabilidade das mensagens armazenadas, replicando-as em vários servidores em diferentes zonas de disponibilidade.

**Amazon Simple Notification Service (SNS).**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uby529jlhg6qhl4k5lef.png)

O Amazon SNS é um serviço de mensageria baseado em tópicos.
Ele segue o modelo pub/sub (publicação/assinatura), onde os publicadores enviam mensagens para tópicos e os assinantes se inscrevem nos tópicos de interesse. Os tópicos podem ter um ou mais assinantes, e as mensagens publicadas são entregues a todos os assinantes.
O SNS suporta vários protocolos de entrega, incluindo HTTP/HTTPS, email, SMS, Amazon SQS, AWS Lambda e outros. Ele oferece filtragem de mensagens baseada em atributos, permitindo que os assinantes recebam apenas as mensagens relevantes para eles.
O SNS garante a entrega confiável das mensagens para todos os assinantes, inclusive para assinantes ausentes temporariamente.

**Amazon Kinesis.**
O Amazon Kinesis é um serviço de streaming de dados projetado para ingestão, processamento e análise em tempo real de grandes volumes de dados. Ele suporta três tipos de serviços: Kinesis Data Streams, Kinesis Data Firehose e Kinesis Data Analytics. O Kinesis Data Streams permite a captura e o armazenamento de dados em tempo real em shards, que são unidades de capacidade de streaming.
O Kinesis Data Firehose permite a entrega direta dos dados de streaming para serviços de armazenamento da AWS, como o Amazon S3 ou o Amazon Redshift, sem a necessidade de armazenamento temporário em shards.
O Kinesis Data Analytics permite a análise em tempo real dos dados de streaming usando consultas SQL padrão. O Kinesis é altamente escalável e pode lidar com a ingestão de terabytes de dados por hora, além de oferecer baixa latência para processamento em tempo real.

**Apache ActiveMQ**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fb7s75r132b8jl0znp40.png)


O Apache ActiveMQ é uma implementação de código aberto do protocolo de mensagens JMS (Java Message Service).
Ele fornece recursos avançados de mensageria para aplicativos baseados em Java. O ActiveMQ suporta os modelos de filas e tópicos.
Ele oferece mensagens persistentes, que são armazenadas em disco para garantir a durabilidade em caso de falhas. O ActiveMQ suporta transações distribuídas, permitindo que várias operações sejam agrupadas em uma única transação atômica.
Ele é altamente configurável, permitindo ajustar parâmetros como políticas de entrega, estratégias de armazenamento em cache e mecanismos de transporte. O ActiveMQ é escalável e pode ser implantado em um ambiente de cluster para aumentar a disponibilidade e a capacidade de processamento.

**Comparação e escolha do serviço adequado.**
Cada um dos serviços de mensageria apresentados possui suas próprias vantagens e casos de uso ideais. O SQS é adequado para cenários em que a ordem de entrega das mensagens é crítica e a resiliência é fundamental. O SNS é uma excelente opção para sistemas distribuídos que requerem comunicação pub/sub com entrega confiável e flexibilidade de protocolos. O Kinesis é a escolha certa para casos de uso que envolvem ingestão e processamento em tempo real de grandes volumes de dados. O ActiveMQ é uma opção robusta para aplicativos baseados em Java que requerem recursos avançados de mensageria e suporte a JMS.

**Considerações finais**
A escolha do serviço de mensageria adequado é crucial para o sucesso de um sistema distribuído. Neste artigo, exploramos o Amazon SQS, SNS, Kinesis e o Apache ActiveMQ, destacando suas características, recursos e casos de uso ideais. Ao compreender as diferenças entre esses serviços, os desenvolvedores podem tomar decisões informadas e selecionar a solução que melhor se adapta às necessidades específicas de seus aplicativos. A AWS oferece uma gama abrangente de serviços de mensageria na nuvem, permitindo a construção de sistemas escaláveis, resilientes e de alto desempenho.

Para mais informações, acessem os links abaixo:
https://aws.amazon.com/pt/sqs/
https://aws.amazon.com/pt/sns/
https://aws.amazon.com/pt/kinesis/
https://aws.amazon.com/amazon-mq/

Espero que você tenha gostado deste post e tenha aprendido algo novo🆙
Qualquer feedback será bem-vindo, é só deixar nos comentários.😀
Curta, compartilhe, siga-me em:
✅ https://linktr.ee/andreelidio