Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Como vender pizzas utilizando eventos.

Como vender pizzas utilizando eventos.

Um case de um solução de arquitetura orientada a eventos e microsserviços.

Eduardo Hitek

August 26, 2021
Tweet

More Decks by Eduardo Hitek

Other Decks in Programming

Transcript

  1. Como vender pizza utilizando
    eventos
    Um case de Arquitetura Event Driven e Microsserviços

    View Slide

  2. Quem sou eu?
    ● Candango;
    ● Ciência da Computação@Unifor;
    ● Pessoa Dev desde 2006;
    ● Senior Software Developer@Trybe;
    ● Aprendiz de Alquimista;

    View Slide

  3. O que vamos ver hoje?
    ● Introdução ao EDA;
    ● Conceito de Evento, Produtor, Consumidor, Filas e Exchanges;
    ● Roteamento;
    ● Possível solução de um problema utilizando Microsserviços e EDA;
    ● Cuidados e pontos de atenção;

    View Slide

  4. O que essa palestra não é
    ● Guia oficial;
    ● Única maneira de como se resolver esse problema;
    ● Definição sobre Tecnologia;
    ● Visão aprofundada sobre EDA;

    View Slide

  5. Problema:

    View Slide

  6. Problema:

    View Slide

  7. O que é Arquitetura baseado em Eventos?
    1. Modelo de Arquitetura de Software;
    2. Comunicação Assíncrona;
    3. Baixo acoplamento;
    4. Altamente escalável;

    View Slide

  8. Evento
    ● Cadastro de um novo Usuário;
    ● Inserção de um item no carrinho de compras;
    ● Envio de uma classificação de um livro;
    ● Inclusão de uma série em uma watchlist;

    View Slide

  9. Produtor/Producer
    1. Origina um evento;
    2. Pode enviar para uma fila ou exchange;
    3. Desconhece quem irá consumir o evento;

    View Slide

  10. Exchange
    1. Transiente;
    2. Responsável pelo roteamento;
    3. Pode rotear para uma ou mais filas;

    View Slide

  11. Fila
    1. Não transiente;
    2. FIFO;
    3. Pode receber eventos diretamente de
    um Produtor;

    View Slide

  12. Consumidor/Consumer
    1. Recebe e processa um evento;
    2. Pode se conectar a mais de uma Fila;

    View Slide

  13. Roteamento/Binding
    1. Regras para a comunicação;
    2. Define como os eventos são
    direcionados;
    3. Depende da solução escolhida;

    View Slide

  14. Publish Key vs Routing Key
    ● Publish Key: informação no evento que é usado pela Exchange no
    roteamento.
    Exemplo: squad.lego
    ● Routing Key: define a regra de como a Exchange irá rotear os eventos para
    as filas.
    Exemplo: squad.scd, squad.*, squad.lego

    View Slide

  15. View Slide

  16. Solução proposta

    View Slide

  17. Tabela de Roteamento de pedidos

    View Slide

  18. Solução proposta
    hifood.criar.pedido
    *.criar.pedido

    View Slide

  19. Tabela de Roteamento de pedidos

    View Slide

  20. Solução proposta
    hifood.pedidos
    hifood.*

    View Slide

  21. Tabela de Roteamento de pedidos

    View Slide

  22. Solução proposta
    *.pedidos
    hifood.pedidos

    View Slide

  23. Formato eventos
    criação do pedido confirmação do pedido

    View Slide

  24. View Slide

  25. Vamos migrar tudo para Eventos e Microsserviços!

    View Slide

  26. E os cenários "não felizes".

    View Slide

  27. Pontos de atenção
    1. Filas de erros de processamento (Dead Letter, Backout) ;
    2. Filas de retry (imediatamente, programadas);
    3. Mensagens retidas em filas;
    4. Comportamento de Idempotência;
    5. Mesmo formato de Evento;
    6. Padrão de nomenclatura (Filas, Exchanges, Routing e Publish Key)

    View Slide

  28. E agora? Vale a pena ou não?

    View Slide

  29. View Slide

  30. View Slide

  31. https://github.com/eduardohitek/palestra-eventos-ms
    https://speakerdeck.com/eduardohitek/como-vender-pizzas-utilizando-eventos
    https://eduardohitek.dev
    @eduardohitek

    View Slide

  32. Muito Obrigado!

    View Slide