logo

MasterClass

para aplicações .NET

com Luiz Carlos Faria

A eficiência da sua aplicação não é determinada pela quantidade de usuários simultâneos que sua aplicação suporta.

Eficiência é medida pelo quanto você gasta pra isso.

Para Dev's .NET

6 Horas

AO VIVO

Repositório de Demos

50 Vagas

Se sua jornada passa pelo desenvolvimento de aplicações distribuídas, RabbitMQ com certeza é um dos fortes candidatos a te ajudar nessa jornada. Seja com microsserviços ou em monolitos com partes distribuídas, RabbitMQ é seu aliado na hora de coordenar a distribuição de mensagens de forma resiliente.

Mensageria é um pilar na comunicação entre serviços em arquiteturas distribuídas

O eShopOnContainers é uma referência sobre microsserviços na comunidade .NET.

O uso do RabbitMQ ou Azure Service Bus são viabilizados por um standard: AMQP.

A adoção de um standard forte é o que possibilita transitar com facilidade entre os 2.

Toda a comunicação assíncrona desse projeto é pautada no EventBus que por sua vez é implementado por um serviço AMQP. 

Simples e Complexo

A simplicidade do RabbitMQ desafia nossa capacidade cognitiva. São apenas 2 elementos: Exchanges e Filas, associadas por um Bind que configura o roteamento entre elas.

Essa simplicidade preoduz a falsa sensação de familiaridade.

É aqui que começam os equívocos que drenam o sucesso da sua implantação.

Você implementa controles que não precisava e dá voltas para fazer aquilo que já é comportamento default, nativo

Essas implementações viram frankensteins! E se voltam contra você. Por fim falta força e tempo para refazer tudo, e pior. Suas energias acabam.

Por que devo participar?

Por décadas nos ensinaram que fazer grandes queries e usar processamento batch era uma prática sadia, comum e até otimizada. Altera-se uma flag, um status, algumas datas, e pronto, o registro está pronto para a próxima etapa de processamento. 

Então, agendada para rodar periodicamente, uma query, muito otimizada varre quase toda a base de dados em busca dos registos que possuam o tal estado mágico.

Esse é a estratégia default no passado.

Mas não é, nem de longe, uma estratégia eficiente, sequer inteligente. Quanto maior o dataset, maior é a degradação de performance ao longo do tempo

Ao mesmo passo que exaltamos e achamos incríveis os serviços que nunca param, nossos sistemas sofrem de narcolepsia, parando e dormindo a cada 5 minutos para esperar A GRANDE QUERY, ser processada. 

Essa forma de trabalhar é ineficiente no mundo do big data, é ineficiente no mundo das milhares de transações por minuto.  Esse formato exige muito mais infraestrutura do que deveria, e dá para fazer muito mais, gastando muito menos.

Pensar que possa ser mais eficiente processar cada mensagem individualmente é disruptivo.

Fazer uma esteira de processamento contínuo, sem a necessidade de batch, otimiza e reduz o consumo ao seu banco de dados.

Esse é um dos segredos para aumentar a escala de processamento, mantendo ou até reduzindo sua infra.

Reduzir acoplamento é algo que falamos muito no dia-a-dia do desenvolvimento, mas aqui extrapolamos essa ideia ao limite, mostrando como o processamento assíncrono, garante a resiliência do seu workflow, mesmo que contenha operações síncronas.

Quem está usando RabbitMQ*

Essas empresas usam RabbitMQ em seus projetos

* Dados fornecidos pela StackShare API e AMQP.org

Instrutor

Fique ligado para a programação completa deste ano, que está chegando em breve. 

Luiz Carlos Faria

🔥 gaGO.io | 🐳 Docker Definitivo | 🎖 Microsoft MVP | 👥MTAC | 💼Software & Solution Architecture

Começar minha carreira na Petrobrás me possibilitou entender quais são as preocupações de projetos grandes e diferenciar, CRUD's de sistemas realmente complexos. 

Meu primeiro contato com o RabbitMQ não foi assistido, amparado por alguém que já usasse anteriormente. Nda disso: Eu tive de tomar a decisão com base nos meus estudos. Tínhamos um problema com o processo de importação de mídias (músicas, vídeos etc).

Ele dependia de um programador que abria o visual studio, alterava algumas strings e executava o projeto com o debugger ativo. Eu não precisava somente de escalabilidade, eu precisava também de automação.

Encontrar uma ferramenta para auxiliar na escala do processo de importação foi uma tarefa que me tomou pelo menos 3 semanas.

Nesas 3 semanas eu me dediquei quase que exclusivamente a essa escolha, antes disso eu havia feito pequenas investidas para entender quais eram as possibilidades.

A primeira vez que tentei entender o RabbitMQ não foi amor à primeira vista. Eu ainda estava embuído do ranço e do rancor pela ineficiência do MSMQ e ingenuamente acreditei que pudesse ser mais do mesmo. No entanto, o fato da SpringSource estar por trás do RabbitMQ me chamou a atenção positivamente.

Ao olhar quem estava usando a solução no mercado, eu entendi que estava diante de algo imponente, e não poderia descartar sem antes estar muito certo da minha decisão.

Na reta final o RabbitMQ entre os finalistas, e para decidir entre eles eu fui obrigado a entender de fato o que o RabbitMQ faz e como faz.

Entre os novos conceitos, o mais disruptivo e com certeza o que me conquistou foi o acknowledgement, ou simplesmente Ack: Uma feature tão simples quanto poderosa, capaz de suprimir meses de desenvolvimento.

A cereja do bolo, para consolidar a decisão era o standard AMQP, que era parte de um consórcio com os principais players do mercado de “filas”, incluindo Microsoft, Red Hat, VMWare, WSO2 e muitos outros.

Desde então eu fiz inúmeras implantações, de diversos tamanhos e para diversas finalidades.

E também passei a falar sobre RabbitMQ para a comunidade .NET.

Onde estou?

sobre o evento

Pra quem & Pra quê?

Requisitos

Desenvolvedores .NET ou JAVA

* Exemplos serão com .NET Core.

Ser um desenvolvedor profissional.

Já ter colocado pelo menos 1 projeto em produção e já ter participado da manutenção de projetos em produção.

Computador ou Notebook com pelo menos 4GB de RAM e que tenha Docker instalado.

Benefícios

Aprenda a consumir uma menor quantidade de recursos para entregar os mesmos cenários de uso.

Entenda como você pode aumentar a capacidade de processamento usando seus servidores ociosos, aumentando as instancias dos seus serviços.

Saiba como produzir métricas e usá-las para tomar decisões de negócio ou mesmo técnicas, como autoscalling.

Falhas são previsíveis, e você pode lidar com elas de forma mais eficiente, você poderá reprocessar mensagens,suportar downtimes e muito mais.

o rabbit 

Pune Aventureiros

e leitores de tutorial

A distribuiçãoi de mensagens é feita de forma diferente em cada um dos tipos de Exchange. Direct, Fanout, Topic e Headers possem regras próprias.

Os binds ligam exchanges à filas, e cada tipo de Exchange exige configuração diferente no bind.

Um dos medos que se tem ao usar RabbitMQ são binds mal configurados, responsáveis por perda de mensagens. Existem mecanismos para lidar com isso, mas as políticas não são configurações comuns com RabbitMQ. 

São inúmeros patterns ao redor desses 4 elementos (filas, exchanges, binds e políticas) e você precisa estar atento a cada uma das configurações para saber se não está diante de um problema. 

Uma fila no RabbitMQ gerencia a entrega para cada consumidor, para que uma mensagem não seja entregue para 2 consumidores.

Para otimizar o tráfego de rede, o RabbitMQ não vai usar round-robin para entregar as mensagens para cada consumidor. As configurações de QoS são necessárias pra fazer tunning e privilegiar a distribuição ou o consumo de rede.

Muita gente implementa mecanismos de persistências para as mensagens para assegurar que as mensagens não serão perdidas. Esse é um erro comum, mas justificável. RabbitMQ é resiliente e suas mensagens, mas exige que você saiba configurar persistência, da fila, da mensagem, da exchange.

Criar uma fila dinamicamente não é um problema, não é um desafio, não é algo que você deva ficar preocupado. Se 10 processos em servidores diferentes podem tentarem criar a mesma fila, e só falharão caso as configurações de criação sejam diferentes.

sobre o evento

Exclusivo

Parte desse processo envolve a minha experiência diária usando RabbitMQ, e eu uso para diversos assuntos em diversos momentos.

Isso permite descobrir coisas que você não encontra no mundo lá fora.

rocket

Tenha a oportundiade de conhecer uma forma segura e resiliente para publicar até 300 vezes mais mensagens.

Não são 300%, são 300 vezes, ou seja 30'000%.

Vou mostrar como eu criei minhas abstrações e o que você pode fazer na sua empresa.

Toda vez que você pluga uma library de terceiros para se comunicar com o RabbitMQ, tenha ciência que, se ela é mais simples, ela está suprimindo alguma coisa. 

Se você não conhece RabbitMQ em profundidade, você não é capaz de avaliar se a library está ajudando de fato, ou servindo de cavalo de Troia, trazendo um risco, que você sequer sabe que existe.

Aqui abordamos exemplos 100% práticos para que você entenda como e quando usar cada recurso.

Agenda

2 dias dedicados a RabbitMQ e Mensageria

Sábado

09 de Janeiro de 2021

Como o processamento contínuo pode melhorar a relação com o consumo de hardware para alcançar grandes cargas de trabalho e como o modelo de grandes queries e processamento batch é oneroso.

Como mapeamos tecnologicamente as iterações do negócio em um mundo baseado em mensageria.

Explicação + Hands On

10:30

Entendendo todos os componentes do RabbitMQ e como se comportam. Virtual Host, Filas, Exchange, Binds e Policies


ALMOÇO - 12PM


Explicação + Hands On

13:00

Hands on

Explicação + Hands On

13:30

Publicando e Consumindo Mensagens

Explicação + Hands On

14:30

Permitindo escala horizontal de serviços e demonstrando quais são os tradeofs de escalar horizontalmente. Como resolver necessidade de lock.

Explicação + Hands On

16:30

Reprocessamento e tolerância a Dontime. Como lidar com aplicações que podem ficar offline. O que fazer? Como configurar? O que é necessário?

Domingo

10 de Janeiro de 2021

9:15

Recap de Todo o dia 1

Exemplos e Tira-dúvidas


ALMOÇO - 13PM


VENDAS ENCERRADAS

Standard
+10 Horas de Conteúdo AO VIVO
Sessões 100% iterativas
Acesso de 1 ano à Gravação
Repositório de Demos no GitHub
Premium
10+ Horas de Conteúdo AO VIVO
Sessões 100% iterativas
Acesso de 1 ano à Gravação
Repositório de Demos no GitHub

O que eles disseram

“The networking is just terrific. The conversations you have, the relation-ships you build, they’re worth every single penny.”
Amy Piper

Pied Piper

Local:

Online, Ao Vivo, via Zoom

Data:

19 de Dezembro de 2020

09:00 às 17:00

VENDAS ENCERRADAS

Faça parte da transformação da sua empresa!