Mensageria e tolerância a falhas

Tudo falha o tempo todo. O Werner Vogels, chefe de tecnologia da aws falou isso. É um excelente incentivo para nós escrevermos códigos e fazer #arquitetura pensando sempre em como se recuperar de uma falha, sem perder aquela request.

Usar #mensageria entre sistemas é uma alternativa bastante usada nas corporações, seja #SQS#Rabbitmq… O objetivo é semelhante, não perder a request. Ter a possibilidade de reprocessa-la, caso algum sistema apresente falhas.

No primeiro cenário da imagem abaixo, quando há uma falha, a request simplesmente é perdida. pois não existe uma #queue para guardar aquela mensagem enquanto o sistema se recupera. Seja reiniciando, ou subindo uma nova máquina.
Já no segundo cenário, existe uma fila, onde as mensagens ficam aguardando ser consumidas, se ocorrer algum erro existe a possibilidade de re-tentativa, ou ir para uma fila de mensagens mortas, #dlq, que pode ser combinado a um #alarme para avisar que algo não esta indo bem, e precisa de atenção.