fbpx
RabbitMQ para Aplicações .NET – a MasterClass virou Curso
Publicado em: sexta-feira, 2 de jul de 2021
Categorias: RabbitMQ de A a Z
Tags: RabbitMQ

Em 2013 eu tinha o desafio de processar milhões de músicas. Eu não tinha uma restrição de tempo, poderia levar um dia ou uma semana. Mas eu precisava assegurar que os 4 consumidores planejados, não concorressem processando os mesmos álbuns. Também precisava assegurar que se o processamento fosse interrompido, eu pudesse retomar de onde parei. Assim começou minha relação com o RabbitMQ. Eu buscava RESILIÊNCIA e CONFIABILIDADE, e acabei ganhando de brinde ESCALABILIDADE, EFICIÊNCIA e DISPONIBILIDADE.

Hoje a empresa se chama Claro Música, mas naquela época se chamava iMusica. Eu cuidava do backoffice e tinha essa demanda.

A escolha

Do início ao fim do meu estudo que elegeu o RabbitMQ, foram 3 semanas muito loucas. Como já compartilhei algumas vezes, eu começo avaliando as características negativas que obviamente descartam e eliminam a maioria.

Nas 2 semanas que sobraram eu me dediquei a entender os benefícios de 2 soluções que passaram pela peneira.

Fora os recursos específicos como Exchanges, as características das filas me chamou muito a atenção. Era diferente, mas era eficiente demais.

Embora os recursos do RabbitMQ estavam me agradando demais, eu precisava de um aval, uma confirmação, algum tipo de certeza de que era a decisão certa.

E fora os recursos que me conquistaram foram:

O standard AMQP (link)

O RabbitMQ é construído sob o AMQP, um standard produzido na OASIS. Uma fundação patrocinada por nomes de extremo peso em nosso mercado:

  • American Bar Association
  • Collabora
  • Dell
  • EclecticIQ
  • General Motors
  • IBM
  • ISO/IEC
  • KDE e.V.
  • Microsoft
  • Novell
  • Oracle
  • Red Hat
  • The Document Foundation
  • universities
  • government agencies
  • individuals and employees from other less-known companies

Hoje é fácil escolher RabbitMQ por causa do AMQP aqui no mundo Microsoft, por conta do Azure Service Bus (Suporte ao AMQP 1.0 no Azure Service Bus) e do suporte do Azure Event Hub (Trocar eventos entre consumidores e produtores que usam protocolos diferentes: AMQP, Kafka e HTTPS). Naquela época só existia o Azure Service Bus, mas não havia nenhuma documentação detalhando AMQP nele, já o Azure Event Hub só chegou em 2014. O fato é que não estava claro se a Microsoft apostaria ou não no standard em criar produtos compatíveis.

A gente está falando de uma época em que Ballmer ainda era o CEO da Microsoft. Ele sairia somente no ano seguinte, em Fevereiro de 2014.

Embora existisse um mar de incertezas, todas essas empresas juntas em prol de um padrão universal e aberto me parecia promissor. Escolher uma tecnologia que adotasse esse standard me pareceu óbvio pois havíamos acabado de passar por uma grande onda de SOA e estávamos entrando na onda dos Microsserviços:

2 arquiteturas baseadas em serviços.

Como disse, os benefícios foram os primeiros motivadores, o AMQP só corroborou com a decisão.

Mas afinal, quais os benefícios?

Primeiro tem de ficar claro que RabbitMQ não faz milagre.

Na prática ele fica entre 2 partes mediando a comunicação.

  • Quando ele recebe mais mensagens que a capacidade de processamento, a filas crescem.
  • Quando ele recebe menos mensagens que a capacidade de processamento, a filas esvaziam.
  • Quando ele recebe o volume igual de mensagens que a capacidade de processamento, a filas ficam estabilizadas onde estão.

E isso dá alguns poderes bem legais:

CONFIABILIDADE

O controle e a garantia de publicação e a garantia de processamento elevam o nível de confiança inclusive contra falhas catastróficas.

EFICIÊNCIA

Se aumentamos a capacidade de receber mensagens, e do outro lado diluímos grandes cargas de trabalho no tempo, tornando a curva de processamento achatada, estamos otimizando o processamento com o elemento tempo, viabilizando continuamos a consumir a mesma infra que consumíamos.

DISPONIBILIDADE

Com o RabbitMQ como mediador, quem de fato precisa estar disponível é ele. Os consumidores podem estar indisponíveis por qualquer motivo.

No hub meus consumidores ficaram 4 meses indisponíveis, simplesmente porque eles não existiam.

RESILIÊNCIA

De um lado conseguimos lidar com a indisponibilidade de serviços de terceiros, aceitando-a e tornando-a irrelevante para nossa própria disponibilidade.

Por outro lado usamos o mesmo mecanismo para garantir que mesmo que o ecossistema consegue receba cargas de trabalho maior do que a capacidade de processamento, isso não cause crash em nossos serviços.

Já em cenários de erros, onde o processamento é interrompido, as mensagens voltam para a fila e outro consumidor tentará pegar. Se for estratégico, é possível usar também uma dead letter ou criar mecanismos para definir limites de retry.

ESCALABILIDADE

As capacidade de escalabilidade com RabbitMQ são incríveis, mas a maioria esmagadora dos projetos sequer precisa de tanta escala, por isso esse tópico entrou como último. A natureza do consumer de apontar para uma fila e começar a processar mensagens faz com que diversos mecanismos comuns quando falamos de escalabilidade não sejam necessários.

Service Discovery? Não precisa.

Load Balancer? Não precisa!

Os consumidores sabem o endereço do RabbitMQ e isso muda tudo.

No Youtube

Eu fiz um vídeo no youtube, será liberado às 11 da manhã de hoje, dia 02/JULHO.

https://www.youtube.com/watch?v=dAsJn_HDi6U

Assim que estiver no ar aparecerá aqui automaticamente. Mas temos o link aqui também.

E se você quer ter esses benefícios em suas aplicações, e acha que RabbitMQ pode te ajudar nessa jornada. Fica aqui meu convite.

A MasterClass de RabbitMQ para Aplicações .NET ganhou corpo e virou curso. As inscrições já estão acontecendo.

RabbitMQ para Aplicações .NET

CONFIABILIDADE | EFICIÊNCIA | DISPONIBILIDADE | RESILIÊNCIA | ESCALABILIDADE

Escolha um benefício e ganhe todos os demais

Em janeiro rolou a Masterclass com o mesmo nome, ela virou brinde nesse novo produto.

Eu gostei muito da entrega.

Mas a entrega ao vivo gera limitações. As dúvidas acabam interrompendo o fluxo, tomando tempo, tornando a dinâmica lenta. Por isso eu resolvi regravar tudo com um novo approach.

Agora declaradamente em formato de curso, aula-a-aula. 100% gravado.

Nessas últimas semanas eu produzi toda a agenda de entrega, listando o que e quais módulos chegam em quais dias. Será do dia 5 de Julho ao dia 26 de Julho, sempre às segundas-feiras.

A ideia é que nesse período, toda segunda-feira você encontre novos módulos lá.

E essa oferta traz 5 produtos pelo preço de meio.

1) Curso completo de RabbitMQ.
Do básico ao avançado.
Do primeiro fundamento até as estratégias mais complexas.

2) O CÓDIGO (gravação do evento) que rolou em maio/2021.
Te ajuda a furar a bolha das empresas pequenos, projetos pequenos para que você destrave os skills necessários para alcançar o projetos que você merece.

3) Jornada Dev Hero (gravação do evento) que rolou em janeiro/2019.
Uma jornada 100% pautada em carreira, mostrando hacks e técnicas para ter sucesso na carreira de tecnologia.

4) Jornada Docker de A a Z (gravação do evento) que rolou em maio/2020.
Uma jornada sobre o mundo dos containers.

Eu preparei uma super oferta, com um super desconto.

O meu concorrente direto oferece um treinamento de RabbitMQ e .NET por nada mais nada menos que 20k. Está aqui o link.

A MasterClass virou Curso

Todo o conteúdo da MasterClass virou Bonus!

Além de mais 3 outros bonus incríveis para ajudar todos que precisam de um up na carreira.

RabbitMQ Newsletter

Novidades e ofertas de conteúdo exclusivo e único no Brasil.

Em 2021 fizemos uma MasterClass em Janeiro, agora em Junho está rolando um treinamento.

RabbitMQ é um assunto que me agrada muito, pois sua capacidade de entregar resultado em projetos de todos os tamanhos é um divisor de águas. Não é tudo que conseguimos usar e tirar proveito em ambientes menores.

A primeira vez que usei RabbitMQ foi em 2013. Desde então nunca mais deixei de usar.

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Gostou do post?

Esse post é uma fração do que eu posso te ajudar em relação a RabbitMQ.

Venha conhecer o que RabbitMQ pode fazer por você e seus projetos.

Se você quer entregar mais Disponibilidade, Eficiência, Resiliência, Confiabilidade e/ou Escalabilidade, com aplicações .NET, esse curso vai te ajudar a conquistar o sucesso da sua implantação.

0 comentários

Enviar um 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.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.

Share This