Microservices e RabbitMQ

Post on 10-Jan-2017

140 views 0 download

transcript

Microservices e RabbitMQ

Messages, messages everywhere!

Quem sou eu?

> Desenvolvedor na Coderockr

> github.com/leandro-lugaresi

> @leandrolugaresi

> leandrolugaresi.com.br

Monolitosvs

Microservices

Monolitossão...

Simples para

desenvolver

Simples para testar

Simples para

implantar

Evolui rapidamente

Porém...Eles crescem!

> Maior risco de falhas> Deploy de toda a aplicação

para pequenas alterações> Dificuldades para realizar

mudanças> Updates menos frequentes

Resultando em:

E os microservices?

Provêm vários benefícios,

mas vêm com custos

↑ Módulos bem separados

↑ Deploy independente

↑ Liberdade para escolher tecnologias

↓Aumento da complexidade

↓Atomic Transactions

↓Persistência eventual

↓Sistemas distribuídos

Onde o RabbitMQ entra nessa

história?

Os serviços precisam se comunicar

RequestsRPC || REST

Message-DrivenRabbitMQ, HornetQ,

Apache Kafka, ZeroMQ

> Open Source com suporte comercial> Robusto, feito em Erlang usando OTP> Protocolos: AMQP, STOMP, MQTT> Sistema de plugins> Fácil de instalar, usar e monitorar> Clients para muitas linguagens

Default Exchange

Direct Exchange

Fanout Exchange

Topic Exchange

Headers Exchange

Queues

> Nome> Durável ou temporária> Exclusiva> Auto-delete> Argumentos (message TTL)

E as mensagens?

Uma mensagem pode conter um

evento codificado como seu corpo

Dicas

Utilize UUID

Utilize correlation IDS

Cuidado,Mensagens podem

ser duplicadas!

Monitore as queues

Somente salve mensagens em

disco se for realmente necessário

Agrupe exchanges por objetivos

Dúvidas?