Alura > Cursos de DevOps > Cursos de AWS > Conteúdos de AWS > Primeiras aulas do curso AWS SQS: mensageria e desacoplamento de sistemas

AWS SQS: mensageria e desacoplamento de sistemas

Conhecendo o AWS SQS - Apresentação

Olá! Boas-vindas ao curso de Amazon SQS, o serviço de mensageria da Amazon. Sou Tales Minucci e serei seu instrutor ao longo dessa jornada educacional. Nesta experiência de aprendizado, você irá compreender a utilidade de serviços de mensageria em geral e, mais especificamente, como usar a implementação da Amazon, o SQS, o renomado serviço de fila simples.

Nós vamos entender todos os benefícios, a escalabilidade e a confiabilidade de usar um serviço de mensageria como o SQS. Este serviço é um dos mais antigos da Amazon e é utilizado por grandes empresas no mundo todo, incluindo a NASA.

Será explorada a definição de preço do Amazon SQS, para você compreender os custos associados à sua utilização. Além disso, vamos abordar conceitos básicos, características e como trafegar dados de maneira segura entre dois sistemas, evitando a perda de mensagens, por exemplo, em uma eventual falha de conexão.

Estudaremos também como replicar a mensagem para diferentes tipos de filas, criando o desacoplamento chamado de tópico. Abordaremos a importância de calcular o tempo de visibilidade de uma mensagem, também conhecido como Visibility Timeout (Tempo de Visibilidade), assim como seu impacto no processamento de mensagens.

Discutiremos as filas FIFO, que garantem a ordem das mensagens. No final do curso, você aprenderá a enviar mensagens por meio da linguagem de programação Node.js, comunicando-se com as APIs da AWS. Adicionalmente, você usará a linha de comando no seu terminal para criar filas, receber mensagens, excluir mensagens, entre outras habilidades.

Estou ansioso para começar este curso e estou comprometido em garantir que você aprenda. Então, vamos embarcar nesta jornada juntos!

Conhecendo o AWS SQS - O que é SQS

Olá! Se você tem interesse em saber como sistemas de mensageria funcionam na prática e a segurança que eles podem proporcionar para nossas aplicações, explicaremos tudo detalhadamente neste vídeo.

Imaginemos o sistema A, que pode ser, por exemplo, um sistema de transações financeiras, um banco ou algo similar. Este sistema precisa se comunicar com outro, que vamos denominar de sistema B, que pode ser o Banco Central, por exemplo.

No Brasil, toda transação financeira precisa ser efetivada no Banco Central. E como essa comunicação poderia ocorrer?

Suponha que seu banco precise enviar uma mensagem para o Banco Central informando sobre uma nova transação financeira que deseja registrar. Há várias maneiras de fazer isso, mas neste vídeo nós exploraremos duas delas.

1. Comunicação síncrona

Imagine que o sistema A faça uma chamada HTTP para o sistema B. Essa chamada pode ser uma chamada REST (Representational State Transfer) ou uma chamada SOAP (Simple Object Access Protocol).

Vamos supor que o sistema B, o Banco Central, não esteja disponível no momento da chamada.

Por que não estaria disponível? Uma das razões é que, quando estamos desenvolvendo sistemas de internet, nunca podemos confiar totalmente na rede. Pode haver perda de pacotes, o client pode simplesmente perder a conexão, a internet pode cair. Portanto, a rede não é confiável.

Outro ponto é a indisponibilidade no servidor; neste caso, no sistema B. Por exemplo, no início do mês, todos recebem dinheiro e muitas transações estão ocorrendo ao mesmo tempo, sobrecarregando o serviço do Banco Central. O Banco Central pode responder muito lentamente, com uma latência muito alta, ou pode ficar indisponível.

Nesse cenário, qualquer tentativa de reenvio teria que ser feita pelo sistema A, ou seja, pelo próprio banco. Este teria que continuar entrando em contato com o Banco Central periodicamente para perguntar "você está disponível?" até conseguir entregar a mensagem.

Isso acaba por não ser muito efetivo, já que sobrecarrega o sistema A com muitas tentativas de reenvio e o sistema B pode levar muito tempo para voltar. Portanto, não é um método confiável.

Então, como poderíamos resolver isso?

2. Comunicação assíncrona

Podemos resolver esse problema com uma comunicação assíncrona. Nesse caso, o sistema A coloca uma mensagem em um broker de mensageria, como o SQS, o Serviço de Fila Simples da Amazon.

Então, o sistema B, quando disponível, consulta o broker de mensageria sobre novas mensagens. Se houver, o broker entrega a mensagem e o sistema B a processa de acordo, seja para gravá-la no banco de dados, em um arquivo, etc.

Sob essa perspectiva, as vantagens são que a mensagem fica armazenada no broker. Então, não há problema se a internet do sistema B não estiver funcionando ou se o sistema B não estiver disponível.

Isso proporciona uma tolerância a indisponibilidades. Não importa se o sistema B ficar offline por uma, duas, três horas ou até alguns dias, já que a mensagem será armazenada temporariamente no broker.

Há um limite, o qual exploraremos ao longo deste curso, mas é um limite alto. Estamos falando de duas semanas de limite. Portanto, isso proporciona uma grande resiliência para nossas aplicações. Tudo o que precisamos é que o sistema A consiga entregar a mensagem com sucesso para a mensageria.

Para entender melhor, vamos fazer uma analogia desse processo com a vida cotidiana. Imagine que você precisa entregar uma mensagem para uma amiga ou amigo. Você escreve a mensagem, coloca em um envelope e deposita na caixa de correio dessa pessoa.

Essa pessoa pode ou não estar em casa no momento do recebimento. Mas você, como remetente, cumpriu seu papel ao deixar a mensagem em um local seguro. A pessoa destinatária, quando checar a caixa de correio, verá que há uma nova mensagem. Então, a comunicação será bem-sucedida.

Em comparação, se tivéssemos usado uma comunicação síncrona, a pessoa remetente teria que ir até a casa da pessoa destinatária. Se a pessoa destinatária não estiver em casa, a pessoa remetente terá que voltar e tentar em outro momento. Isso seria muito cansativo e oneroso para a pessoa remetente.

Portanto, com uma comunicação assíncrona, garantimos a entrega da mensagem, seja na hora ou em um momento posterior.

Conhecendo o AWS SQS - Criando uma fila SQS

Agora que compreendemos os principais benefícios da utilização do sistema de mensageria, vamos finalmente criar nossa primeira fila na AWS. Vamos lá!

O primeiro passo a fazer é decidir a região na qual iremos trabalhar. No console da Amazon, no canto superior direito, você pode clicar na região pré-configurada. No caso do instrutor, é North Virginia, ou Virgínia do Norte, estado dos EUA. Clicando, temos uma lista todas as regiões disponíveis pela AWS.

Durante o curso, utilizaremos North Virginia, porque é a região onde todas as novas funcionalidades são primeiramente implementadas. Depois, mediante testes bem-sucedidos, essas funcionalidades são distribuídas para outras regiões.

No entanto, para o conteúdo desse curso, nada impede que você escolha outra região. Você pode, inclusive, escolher o datacenter de São Paulo sem problema algum.

O segundo passo é buscar o sistema que utilizaremos. Neste caso, o Simple Queue Service, SQS, ou sistema de fila simples da Amazon.

Existem algumas maneiras de buscar esse serviço. No centro da tela do console da AWS, temos o menu de Find Services. Podemos clicar nele e digitar "SQS", que é o acrônimo, e veremos que o Simple Queue Service aparece como opção clicável na lista suspensa.

Outra opção é, no canto superior esquerdo da tela, clicar em Services e também digitar "SQS" para filtrar os serviços. Ambas as opções são válidas, fica a seu critério qual você acha mais fácil.

Clicando em Simple Queue Service, nos redirecionamos ao console da SQS da Amazon e podemos clicar em "Create Queue" (criar fila).

Todas as configurações que usaremos agora são as configurações padrão, inclusive o tipo da fila, que é a fila "Standard", ou seja, a fila padrão. No futuro, também exploraremos filas FIFO.

O próximo passo é dar um nome para a nossa fila. Podemos chamar nossa fila de alura-test.

Nas configurações, manteremos tudo como padrão e clicaremos em "Create Queue" (criar fila) ao final da tela.

A criação da fila é muito rápida, leva apenas um ou dois segundos. Temos a nossa primeira fila criada, como podemos verificar na tela de Queues da SQS.

Podemos conferir os metadados da nossa fila, como o nome, o tipo da fila, uma URL de conexão que usaremos no futuro, entre outros.

A primeira coisa que faremos, no entanto, é enviar uma mensagem para a nossa fila. Afinal, criamos uma fila e queremos enviar mensagem para ela.

No canto direito superior da tela, temos o botão "Send and Receive Messages" (enviar e receber mensagens). Ao clicar neste botão, podemos conferir algumas configurações para o envio desta mensagem.

A primeira é o Message Body (corpo da mensagem), ou seja, o que efetivamente iremos enviar para o SQS. No mundo da TI, é muito comum criarmos o famoso "Olá, mundo!" como teste e faremos o mesmo com a mensagem SQS. Então, vamos digitar essa frase no campo do corpo e clicar em "Send Message" no topo direito da tela. Não iremos alterar nenhuma outra configuração.

Feito isso, recebemos o aviso de que nossa mensagem foi enviada e está pronta para ser recebida. Clicando em "View details" nesse aviso, podemos conferir que a essa mensagem foi atribuído um ID, ou seja, internamente a Amazon gravou esta mensagem, e temos até o corpo dela codificado em MD5.

Fechando este pop-up, vamos descer até a opção "Poll for Message", a busca por mensagens, ou seja, verificar se a nossa mensagem realmente está na fila.

Temos uma dica sobre isso no campo "Messages Available" (mensagens disponíveis) da fila, que exibe o número de mensagens que a fila recebeu. Nesse caso, exibe o número 1, mas queremos ter certeza disso.

Então, no canto direito da tela, vamos clicar no botão de busca. Com isso, podemos notar que a seção de Messages foi populada com uma mensagem.

Clicando nesta mensagem, podemos conferir seu corpo, ou seja, o "Olá, mundo!". Portanto, nossa mensagem foi recebida com sucesso.

O que podemos fazer agora é fechar este pop-up e apagar esta mensagem. Ou seja, criamos a mensagem, lemos a mensagem e agora vamos excluí-la. Então, clicamos em "Delete" ao lado da seção de Messages e confirmar a operação.

Voltando para o menu de filas (link "Queues" no canto superior esquerdo), verificamos que na nossa fila alura-test não há nenhuma mensagem disponível, pois acabamos de deletar a que enviamos.

Nesta aula conseguimos criar uma fila na nuvem, enviar uma mensagem, ler esta mensagem e finalmente excluir esta mensagem. Nenhuma mensagem foi deixada para trás!

Sobre o curso AWS SQS: mensageria e desacoplamento de sistemas

O curso AWS SQS: mensageria e desacoplamento de sistemas possui 82 minutos de vídeos, em um total de 38 atividades. Gostou? Conheça nossos outros cursos de AWS em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda AWS acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri powered by ChatGPT

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas