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á, seja muito bem-vindo, seja muito bem-vinda ao curso de Amazon sqs, o serviço de mensageria da Amazon. Meu nome é Thales Minussi e eu serei seu instrutor ao longo dessa jornada. Jornada esta que você vai aprender toda a aplicabilidade de uso de mensagerias como um todo, e mais precisamente como usar a implementação da Amazon com sqs, o famoso serviço de fila simples.

Você vai entender todos os benefícios, a escalabilidade e a confiabilidade de usar um serviço de mensageria como o sqs. Esse serviço é muito antigo, é um dos serviços mais antigos da Amazon e grandes empresas no mundo todo o utilizam, incluindo a Nasa.

Ao fim deste curso você também aprenderá como utilizá-lo. Você vai ver a definição de preço, ou seja, quanto custa para usar o Amazon SQS, vai entender todos os conceitos básicos, as características, e nós vamos desbravar tudo isso juntos.

Por exemplo, você vai entender como trafegar dados seguramente entre dois sistemas, sem que a mensagem se perca ao longo do caminho. Por exemplo, em uma eventual falha de conexão. Você vai entender como replicar a mensagem para vários tipos de fila diferentes, criando desacoplamento chamado de tópico.

Você também vai aprender a discutir e entender como se calcula o tempo de visibilidade de uma mensagem, que é também chamado de visibility timeout, e você vai entender toda a aplicabilidade desse conceito e por que ele é fundamental no processamento de mensagens.

Também falaremos sobre filas FIFO, que são as filas que garantem a ordem das mensagens. Ao final do curso, você também aprenderá a enviar mensagens através da linguagem de programação NodeJS, então iremos comunicarmo-nos com as APIs do AWS através da linguagem de programação NodeJS.

Além disso, você também utilizará a linha de comando no seu terminal para criar filas, receber mensagens, destruir mensagens e muito mais. Eu estou muito ansioso para começar esse curso, quero muito que você aprenda. Então vem comigo que vamos começar a desbravar tudo isso 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 dar para as nossas aplicações, vem comigo que vou explicar tudo neste vídeo.

Imaginemos que temos um sistema A, que pode ser um sistema de transações financeiras, um banco, ou qualquer coisa do gênero, e ele precisa se comunicar com outro sistema, esse sistema vamos chamar de sistema B, que pode ser, por exemplo, o Banco Central.

No Brasil, toda transação financeira precisa ser efetivada no Banco Central, e como essa comunicação poderia acontecer? Imagine que você tem um banco e precisa mandar uma mensagem para o Banco Central falando “eu tenho uma nova transação financeira e eu quero gravar essa transação financeira junto a vocês, quais são as maneiras de fazer isso?”.

Existem várias maneiras, mas neste vídeo abordaremos duas. A primeira delas é 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, pode ser uma chamada soap, e o sistema B falha, o Banco Central não está disponível no momento da chamada.

Por que o Banco Central não estaria disponível? Um dos motivos é que quando estamos fazendo sistemas de rede nunca podemos confiar na rede. A rede não é confiável. Pode haver perda de pacotes, o client pode simplesmente perder a conexão, a internet pode de fato cair. Então, não podemos confiar na rede.

O outro ponto é indisponibilidade no servidor, neste caso indisponibilidade no sistema B, então imagine que é começo do mês, todo mundo recebeu dinheiro e tem um monte de transações acontecendo no mesmo momento, onerou o sistema do Banco Central. O Banco Central ou vai responder muito demoradamente, com a latência muito alta, ou pode de fato ficar indisponível.

E aí todo o tratamento de retentativa teria que ficar no sistema A. Ou seja, no próprio banco, ficar de tempos em tempos chamando Banco Central e falando “você está disponível? Você está disponível?”, até que conseguisse de fato efetuar a entrega desta mensagem.

Isso acaba não sendo muito efetivo, porque onera o sistema A que tem que ficar tendo muita retentativa e pode ser que o sistema B demore muito tempo para voltar, então não é confiável.

Como podemos resolver isso? Podemos resolver isso com uma comunicação assíncrona, onde o sistema A coloca uma mensagem em uma mensageria, em um broker, ou no nosso caso do curso, no sqs, o serviço de fila simples da Amazon.

O que acontece então? O sistema B, quando disponível, pergunta para a mensageria se há mensagens novas, e se tiver a mensageria entrega essa mensagem e o sistema B processa de acordo, seja para gravar no banco, em um arquivo, ou qualquer que for que seja a execução que ele necessite fazer.

Olhando por essa perspectiva, as vantagens são que a mensagem fica salva no broker, então não tem problema se a internet do sistema B não está funcionando ou o sistema B não está disponível. Isso gera uma tolerância a indisponibilidades. Não tem problema se o sistema B ficar fora por uma, duas, três horas ou até por alguns dias, pois a mensagem vai ficar salva temporariamente aqui no broker.

Existe um limite, exploraremos esse limite ao longo do curso, mas é um limite alto, estamos falando de duas semanas de limite. Então, isso dá muita resiliência para nossas aplicações, porque tudo que precisamos é que o sistema A entregue a mensagem com sucesso para a mensageria.

Trazendo isso para um caso real, para um caso de uso da nossa vida mesmo, qual seria um exemplo mais próximo? Seria o exemplo onde temos um remetente. Você quer entregar uma mensagem para um colega, para uma colega, e você pega um envelope, lacra, escreve seu texto e deixa na caixa de correio dessa pessoa.

Essa pessoa pode ou não estar em casa no momento do recebimento, mas você, como remetente, fez o papel de deixar a mensagem em um local seguro. O destinatário, se não estiver em casa ou quando estiver em casa e checar a caixa de correio vai ver que tem uma mensagem, então de fato essa comunicação vai ter sido executada com sucesso, quando o destinatário pegar na caixa de correio a mensagem que foi entregue mais cedo.

Agora imagine se a comunicação fosse síncrona. O remetente chega na casa do destinatário, o destinatário não está, está no trabalho, no médico, está fazendo alguma outra coisa. O remetente tem que voltar e tentar em outro momento. Seria muito cansativo e oneroso para o remetente.

Dessa maneira, com uma comunicação assíncrona garantimos que a mensagem seja entregue, seja na hora ou em um momento posterior.

Conhecendo o AWS SQS - Criando uma fila SQS

Agora que entendemos os benefícios principais da utilização do sistema de mensageria, vamos finalmente criar nossa primeira fila na AWS. Se você está empolgado, está interessado, está curioso, vem comigo que vamos desbravar isso neste momento.

O primeiro passo a fazer é decidir qual região iremos trabalhar. No console da Amazon, no canto superior direito, você pode clicar na região, no meu caso North Virginia, ou Virginia do Norte, e ver todas as regiões disponíveis pelo AWS.

No curso utilizaremos North Virginia porque é uma região que todas as funcionalidades novas são primeiro criadas lá e depois dos testes com sucesso distribuídas para outras regiões. Porém, para o conteúdo do curso, nada impede que você escolha outra região, inclusive você pode escolher o datacenter de São Paulo sem problema nenhum.

Eu, por força do hábito, escolherei North Virginia. O segundo passo a fazer é buscar o sistema que vamos utilizar, no caso o sqs ou sistema de fila simples, da Amazon. Temos algumas maneiras de buscar esse serviço. No centro da tela temos o menu de find services, podemos clicar nele e digitar sqs, que é o acrônimo, e veremos que o simples queue service aparece.

Uma outra opção, no canto superior esquerdo da tela, clicar em services e também digitar sqs. Ambas as opções são válidas e fica a seu critério qual você achar mais fácil.

Clicando em simple service somos levados ao console da sqs da Amazon e podemos clicar em create queue, ou seja, criar fila. Todas as configurações que usaremos neste momento são as configurações padrão, inclusive o tipo da fila, que é a fila standard, ou seja, fila padrão.

Em um futuro também exploraremos filas FIFO. O próximo passo é dar um nome para a nossa fila. Eu vou chamar nossa fila de Alura-test. Temos também as configurações, vou deixar novamente todas as configurações padrão e vou até o fim da tela clicar em create queue, criar fila.

A fila é muito rápida para ser criada, só leva um ou dois segundos. Vou tirar as mensagens do topo da minha tela, e temos nossa primeira fila criada. Temos os metadados da nossa fila, o nome, o tipo da fila, uma url de conexão que usaremos no futuro, e entre outras coisas.

A primeira coisa que faremos, no entanto, é enviar uma mensagem para nossa fila, afinal criamos uma fila e queremos enviar mensagens para ela. No canto direito superior temos o send and receive message, ou seja, enviar e receber mensagens. Vou clicar neste botão, e somos deparados com algumas configurações para o envio desta mensagem.

No caso, com o message body, o corpo da mensagem. Ou seja, o que efetivamente iremos enviar para o sqs. No mundo de TI, no mundo de desenvolvimento é muito comum criarmos o famoso “olá, mundo”, e faremos a mesma coisa com a mensagem sqs.

Vou digitar aqui “olá, mundo”, e vou clicar em send message, não vou mexer em nenhuma outra configuração. Clicado em send message, vemos que nossa mensagem foi enviada e está pronta para ser recebida.

Clicando em ver os detalhes desta mensagem vemos que ela foi atribuída a um id, ou seja, internamente a Amazon gravou esta mensagem, e temos até o corpo dela codificado em md5.

Fechando este pop-up podemos então fechar esse trecho e descer até poll for message, que é a busca por mensagens. Ou seja, ver se nossa mensagem realmente está na fila. Temos uma dica no messages available, que diz “você tem mensagens disponíveis”, no caso uma, mas queremos ter certeza disso.

Então, no canto direito da tela, no poll for messages, vou clicar neste botão e vejo aqui que a seção de messages foi populada com uma mensagem. Clicando nesta mensagem vemos o trecho que contém o corpo dela, ou seja, o “olá, mundo”, então nossa mensagem foi recebida com sucesso.

O que podemos fazer agora é fechar esse pop-up e até excluir essa mensagem. Ou seja, criamos a mensagem, lemos a mensagem, agora vamos exclui-la. Vou clicar em delete e confirmar a deleção.

Voltando para o menu de filas, no canto superior esquerdo temos nossa fila Alura-test e nenhuma mensagem disponível porque acabamos de deletar. Ou seja, nessa aula conseguimos criar uma fila na nuvem, enviamos uma mensagem, lemos essa mensagem e finalmente excluímos essa mensagem para não ficar com nenhuma mensagem 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

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programaçã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.

  • 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.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programaçã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.

  • 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.

12X
R$120
à vista R$1.440
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