fbpx
Home Eventos RabbitMQ – TIRA DÚVIDAS – Alunos #set/2021
Luiz Carlos Faria | gaGO.io

Organizador

Luiz Carlos Faria | gaGO.io
E-mail
[email protected]
Website
https://gaGO.io
Saiba mais

Localização

Zoom Meeting
Online / Live Meeting

Mais Informações

Saiba mais

Próxima Ocorrência

Categorias

Assine

Data

16 set 2021
Expired!

Tempo

20:00 - 21:00

RabbitMQ – TIRA DÚVIDAS – Alunos #set/2021

Sobre o Evento

Tira-Dúvidas com alunos do RabbitMQ para Aplicações .NET realizado via Zoom.

Link da sala do Zoom será disponibilizado no grupo do telegram no dia do evento.

Sobre RabbitMQ

Mensageria é parte fundamental em um mundo eventualmente conectado. Microsserviços acelerou a adoção de mensageria e nesse papel RabbitMQ se destaca como ninguém.

Muito além de uma estrutura de filas, o RabbitMQ é um Message Broker poderoso com capacidades para coordenar processamento em larga escala, garantir resiliência trazendo pelo menos 5 grandes benefícios para os mais variados cenários.

Os benefícios

Cada aplicação pode usar ou tirar proveito de um desses benefícios. Alguns são mais fáceis de alcançarmos outros mais difíceis. Tudo depende do tamanho da sua aplicação e da vida pregressa do projeto em questão.

Disponibilidade

Disponibilidade é um dilema de Microsserviços. O acoplamento em aplicações distribuídas é um vilão para a disponibilidade. Com RabbitMQ reduzimos o acoplamento a um nível em que a disponibilidade de um serviço não afeta a disponibilidade de outros. O modelo assíncrono permite isso, fazendo com que uma sequencia de mensagens e eventos transitem entre serviços que eventualmente podem estar indisponíveis.

Eficiência

Eficiência é um dos principais pontos cegos no dia-a-dia do desenvolvimento de larga escala. O mundo é baseado em estruturas de enfileiramento. De um caixa de supermercado, a uma fila de banco, ou a distribuição de carros do uber, qualquer encomenda em uma transportadora. Sempre que a demanda é maior que a capacidade de atendimento, produzimos filas, que consistem no acúmulo de tarefas e distribuição de tarefas de acordo com a nossa capacidade de processamento. Curiosamente ignoramos isso quando falamos de software. Nós tendemos a realizar todas as operações online, ao vivo, em transações síncronas. Isso funciona, claro, mas é ineficiente e consome muito mais recurso do que precisava de fato.

Com RabbitMQ conseguimos lidar com a oscilação de cargas de trabalho que podem ser vezes maior que nossa capacidade de processamento e ainda assim não negamos serviço, não trazemos uma experiência ruim para nossos usuários.

Resiliência

Resiliência é a capacidade do indivíduo lidar com problemas, adaptar-se a mudanças, superar obstáculos ou resistir à pressão de situações adversas. No software, resiliência é a capacidade de conviver com os problemas do dia-a-dia, como indisponibilidade de rede, banco, serviços dependentes sem que isso cause pane. Com RabbitMQ conseguimos lidar com falhas das mais variadas, já que as filas controlam o processamento das mensagens, assegurando que a mensagem só será apagada quando de fato for processada. Isso garante que indisponibilidade de banco, rede e outros recursos não cause perdas, simplesmente produzem retentativas.

Confiabilidade

Confiabilidade está muito associado à diversos dos outros benefícios que encontramos no uso do RabbitMQ. As garantias de processamento futuro, nos permite ter a segurança de que as tarefas serão executadas assim que possível. Isso nos assegura que aqueles que produzem demandas continuam demandando, embora nosso próprio software possa estar enfrentando dificuldades ou mesmo esteja offline. Entre as estratégias mais diversas temos a oportunidade de trabalhar também com estruturas não destrutivas, como as streams que eventualmente conseguem nos fornecer informações precisas e imutáveis sobre o passado.

Escalabilidade

Escalabilidade nos permite multiplicar a capacidade de processamento, quando uma grande carga de trabalho para ser atendida. Independente de por um lado conseguirmos fornecer mais eficiência, diluindo nosso processamento no tempo. O RabbitMQ oferece a oportunidade de escalar o processamento adicionando consumidores, que receberão conjuntos diferentes de mensagens oriundos de uma mesma fila. Esse controle nativo do RabbitMQ poupa tempo e processamento, visto que não precisamos lidar com locks e queries para determinar se uma mensagem já foi processada ou está em processamento em outro consumidor. Ele cuida desse detalhe para que nós só nos preocupemos com esse tipo de controle.

Porque eu uso RabbitMQ?

Eu uso RabbitMQ para poder tomar decisões sérias o mais tarde possível e com o máximo de tranquilidade, evitando caos e desespero de um sistema fora do ar.

De um lado eu consigo limitar a execução da carga de trabalho a um nível que não ofenda minha infraestrutura. Do outro eu aceito a chegada de demandas vezes maior que minha capacidade de processamento. Essa desproporção tende a ocorrer em cenários de pico, e consigo, com o tempo e experiência com aquela carga de trabalho medir e prever crescimento da minha infra e/ou otimizações necessárias. Mas tudo isso é feito de forma tranquila, sem caos, sem desespero, sem a pressão de uma aplicação fora do ar.

É assim que eu ganho paz e serenidade para fazer um deploy no meio do expediente sem que isso se traduza em indisponibilidade.

Claro que algumas partes, você precisa de um cuidado diferente, mas agora não é mais 100% do software que precisa estar 100% do tempo disponível. Você reduz o acoplamento para que somente uma pequena parte crítica tenha essa necessidade. Todo o resto pode estar indisponível e o efeito cascata também é mitigado.

Por outro lado, quando tenho demandas em escala, eu consigo paralelizar das formas mais variadas, atendendo cargas de trabalho monumentais.

Com esse conjunto de benefícios, consigo melhorar cenários pequenos e médios, promovendo mais desacoplamento sem tanta demanda por escalabilidade, e em cenários grandes, conseguimos lidar com paralelismo e escala. Temos algo que favorece as 2 extremidade do espectro.

Eu assumo minha incapacidade de fazer futurologia, e sinceramente eu não preciso. Eu já participei de grandes análises que se basearam em feeling de pessoas que deveriam ter a dimensão e a informação sobre volumetria, mas na prática o resultado era completamente diferente.

São soluções como RabbitMQ que me permitem ignorar esses alicerces controversos sobre previsão e análises de volume e escala, e passo a atender os dilemas do dia-a-dia de produção. Sem esoterismo, sem futurologia, sem previsões falhas de um futuro hipotético que possivelmente nunca será alcançado da forma como planejada ou estipulada.

Se você tem interesse em participar do curso RabbitMQ para Aplicações .NET esses 2 links irão explicar tudo que você precisa saber para participar:

Enviar Comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.