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

[DevTrends - Jun/2022] Arquitetura baseada em eventos

[DevTrends - Jun/2022] Arquitetura baseada em eventos

Cada vez mais estamos evoluindo para um cenário onde contextos bem definidos do business são representados por serviços independentes que expressam a realidade por trás do código. Tendo em vista que nossa realidade é assíncrona e que muito do que acontece no mundo é visto por nós como "coisas" (ou eventos) que acontecem em diferentes contextos ao nosso redor, o objetivo de modelar software que expresse a realidade também tange a comunicação entre serviços de diferentes contextos, em forma de eventos.

Nessa talk, veremos como uma arquitetura baseada em eventos pode ser uma opção coerente e viável para a comunicação entre serviços, abordando suas vantagens e desvantagens.

36489105af6ebd101e8f250e537e70d3?s=128

Camila Campos

June 28, 2022
Tweet

More Decks by Camila Campos

Other Decks in Programming

Transcript

  1. Arquitetura baseada em eventos @camposmilaa

  2. Elementos da comunicação @camposmilaa

  3. Comunicação mensagem

  4. Comunicação Emissor mensagem

  5. Comunicação Emissor Receptor mensagem

  6. Comunicação Emissor Receptor mensagem Contexto

  7. Comunicação Emissor Receptor mensagem Contexto Código

  8. Comunicação Emissor Receptor mensagem Contexto Código Canal

  9. Camila Campos Meu propósito de vida é promover diversidade e

    inclusão através da educação @camposmilaa
  10. None
  11. genialcare.com.br

  12. @genialcare

  13. Arquitetura baseada em eventos @camposmilaa

  14. None
  15. Domain Driven Design

  16. Linguagem Ubíqua (ubiquitous language)

  17. Linguagem Ubíqua (ubiquitous language) cliente

  18. Linguagem Ubíqua (ubiquitous language) cliente cliente

  19. Linguagem Ubíqua (ubiquitous language) usuário cliente

  20. Contextos Delimitados (bounded contexts)

  21. Contextos Delimitados (bounded contexts) Avaliação Intervenção

  22. objetivo de entender e modelar a realidade

  23. Microserviços

  24. traz um desafio: comunicação entre serviços

  25. A B Comunicação síncrona (http)

  26. Simplicidade

  27. Simplicidade Encapsulamento

  28. Simplicidade Encapsulamento Acoplamento

  29. Simplicidade Encapsulamento Acoplamento Performance

  30. Simplicidade Encapsulamento Acoplamento Performance Disponibilidade

  31. A B Comunicação síncrona (http)

  32. A B Comunicação assíncrona (mensageria)

  33. Comunicação assíncrona (mensageria) A B Message broker

  34. Desacoplamento

  35. Desacoplamento Escalabilidade

  36. Desacoplamento Escalabilidade Complexidade

  37. Desacoplamento Escalabilidade Complexidade Consistência Eventual

  38. Comunicação assíncrona (mensageria) A B Message broker

  39. Desacoplamento Escalabilidade Complexidade Consistência Eventual Tolerância à falhas

  40. Comunicação assíncrona (mensageria) A B Message broker

  41. objetivo de entender e modelar a realidade Domain Driven Design

  42. Comunicação Emissor Receptor mensagem Contexto Código Canal

  43. Comunicação entre sistemas A emissor B receptor mensagem Contexto Código

    / Contrato Canal
  44. Comunicação entre sistemas A emissor B receptor mensagem Contexto Código

    / Contrato Canal
  45. 1. Comando A B Faz essa pra mim, parça

  46. 1. Comando A B Faz essa pra mim, parça Tá

    feito, xuxu
  47. 2. Notificação A B Aconteceu uma coisa

  48. 2. Notificação A B Aconteceu uma coisa Conta mais aí

  49. 3. Notificação com conteúdo A B Aconteceu uma coisa +

    Fofoca completa
  50. "Aconteceu alguma coisa"

  51. evento: expressa fatos que aconteceram no passado

  52. Um exemplo da vida real: Como você tá?

  53. BEM ou MAL

  54. BEM ou MAL

  55. Arquitetura Baseada em Eventos Event Driven Architecture (EDA)

  56. A Message broker evento B C Arquitetura baseada em eventos

  57. Event Sourcing

  58. todo estado é transiente e apenas fatos são persistidos

  59. Sessões Realizadas X horas Canceladas X horas Total X horas

    % Cancelamento X %
  60. Dia 1: Sessão de 1h realizada Dia 2: Sessão de

    2h cancelada Realizadas 1h Canceladas 2h Total 3h % Cancelamento 66.67%
  61. Dia 1: Sessão de 1h realizada Dia 2: Sessão de

    2h cancelada Dia 3: Sessão de 2h30 realizada Dia 3: Sessão de 1h cancelada Realizadas 3h30 Canceladas 3h Total 6h30 % Cancelamento 46.15%
  62. Dia 1: Sessão de 1h realizada Dia 2: Sessão de

    2h cancelada Dia 3: Sessão de 2h30 realizada Dia 3: Sessão de 1h cancelada Sessão de 1h realizada Sessão de 2h cancelada Sessão de 2h30 realizada … Sessão de 1h cancelada
  63. Dia 1: Sessão de 1h realizada Dia 2: Sessão de

    2h cancelada Dia 3: Sessão de 2h30 realizada Dia 3: Sessão de 1h cancelada Sessão de 1h realizada Sessão de 2h cancelada Sessão de 2h30 realizada … Sessão de 1h cancelada Realizadas 3h30 Canceladas 3h Total 6h30 % Cancelamento 46.15%
  64. Dia 1: Sessão de 1h realizada Dia 2: Sessão de

    2h cancelada Dia 3: Sessão de 2h30 realizada Dia 3: Sessão de 1h cancelada Sessão de 1h realizada Sessão de 2h cancelada Sessão de 2h30 realizada Sessão de 1h cancelada snapshot …. Realizadas 3h30 Canceladas 3h Total 6h30 % Cancelamento 46.15%
  65. Dia 1: Sessão de 1h realizada Dia 2: Sessão de

    2h cancelada Dia 3: Sessão de 2h30 realizada Dia 3: Sessão de 1h cancelada Sessão de 1h realizada Sessão de 2h cancelada Sessão de 2h30 realizada Sessão de 1h cancelada snapshot …. Realizadas 1h Canceladas 2h Total 3h % Cancelamento 66.67%
  66. Event Sourcing + CQRS

  67. Command Query Responsibility Segregation

  68. Sessão de 1h realizada Sessão de 2h cancelada Sessão de

    2h30 realizada Sessão de 1h cancelada … Realizadas 3h30 Canceladas 3h Command Query Responsibility Segregation
  69. Sessão de 1h realizada Sessão de 2h cancelada Sessão de

    2h30 realizada Sessão de 1h cancelada … Realizadas 3h30 Canceladas 3h Command Query Responsibility Segregation Realizadas 2 Canceladas 2
  70. nem tudo são flores

  71. Assincronia

  72. Assincronia Complexidade

  73. Assincronia Complexidade Consistência Eventual

  74. Assincronia Complexidade Consistência Eventual Projeções

  75. Assincronia Complexidade Consistência Eventual Projeções Correções por eventos

  76. Não use um canhão para matar uma formiga

  77. Valeuzão! Camila Campos bit.ly/camila-devtrends22 genialcare.com.br @genialcare @camposmilaa