RabbitMQ - Flask e Sendgrid

E-mail de boas vindas e ativação da conta do usuário

Arquitetura

O monolito é muito bom para

E o monolito pode....

virar um grande quebra cabeça

Estórias

1. Como usuário devo me registrar no aplicativo para ter acesso as principais noticias do mercado de ações

2. Como plataforma devo cadastrar o usuário na base de dados e enviar um e-mail de boas vidas com um botão para ativar a conta do usuário

3. Como plataforma devo receber a  URL de ativação, verificar o usuário e ativar a conta para que ele, o usuário, acesse a plataforma

Possíveis problemas com o código anterior

  • A requisição pode demorar para ser processada devido o custo de rede.
  • O serviço do terceiro pode estar fora do ar.
  • A requisição está com dados errados e o serviço de terceiro retorna um erro.

Efeitos colaterais em caso de erro

Efeito colateral

Para o usuário

Não irá receber o e-mail como consequência não irá utilizar o aplicativo pois não está ativado. Em linguagem de CRM perde-se um LEAD.

Efeito colateral

Para a equipe de densenvolvimeto

Verificar o serviço de e-mail, fazer um envio de teste, reprocessar o pedido, ir para o código diagnosticar o problema. Constatado um BUG na plataforma é necessário abrir uma nova tarefa, corrigi-la, o que demanda mais tempo de desenvolvimento

Efeito colateral

Para a empresa

Gastos envolvidos tanto na alocação de um profissional para corrigir o problema quanto a perda de um valioso usuário que vai deixar de usar a plataforma

Proposta

Quebrar o monolito

  • Disponibilidade
  • Segurança de dados
  • Funcionalidades mais enxutas
    e desacopladas

RabbitMQ

Fluxo

Fonte: https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html

RabbitMQ

Tipos de Exchanges

Fonte: https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html

CloudAmqp

Produtor. Lets code

Sendgrid. 12K emails free

Worker em NodeJS

Ativando a conta

Conclusão

Obrigado

  • Github: https://github.com/lucassimon/flask-api-users
  • Website: https://lucassimon.com.br