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

[TDC Recife 2019] Event Driven Architecture

[TDC Recife 2019] Event Driven Architecture

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.

http://thedevelopersconference.com.br/tdc/2019/recife/trilha-arquitetura

Camila Campos

October 10, 2019
Tweet

More Decks by Camila Campos

Other Decks in Programming

Transcript

  1. @camposmilaa Plataforma online Empréstimo com garantia Juros baixos pra você

    <3 creditas.com.br vagas.creditas.com.br @CreditasBR
  2. @camposmilaa Inclusão de mulheres em Tech Workshop de Rails Inspiração

    railsgirls.com.br fb.com/railsgirls.sp @RailsGirlsSP
  3. @camposmilaa "OOP to me means only messaging, local retention and

    protection and hiding of state-process, and extreme late-binding of all things." Alan Kay
  4. @camposmilaa "The big idea is messaging [...] The key in

    making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be" Alan Kay
  5. @camposmilaa ANALISE DE RISCO - data - resultado IMÓVEL -

    endereço - valor CLIENTE - cpf - nome - data de nascimento
  6. @camposmilaa Solicitei um empréstimo Preenchi o cadastro Coloquei a casa

    como garantia Meu crédito foi aprovado 1. 2. 3. 4. 5.
  7. @camposmilaa Solicitei um empréstimo Preenchi o cadastro Coloquei a casa

    como garantia Meu crédito foi aprovado O empréstimo foi concedido 1. 2. 3. 4. 5.
  8. @camposmilaa Banco de dados Event Store id event 1 Crédito

    solicitado {id: 1, valor: 50.000, motivo: Reforma} 2 Crédito aprovado {id: 1, valor-máximo: 70.000}
  9. @camposmilaa ANALISE DE RISCO - data - resultado IMÓVEL -

    endereço - valor CLIENTE - cpf - nome
  10. @camposmilaa Modelo tradicional Cliente id cpf nome 1 11122233344 Pedro

    Salomão 2 55566677788 Maria Rita 3 98765432100 Sandy & Junior
  11. @camposmilaa Modelo tradicional Cliente id cpf nome 1 11122233344 Pedro

    Salomão 2 55566677788 Maria Rita 3 98765432100 Sandy
  12. @camposmilaa Event Sourcing Event Store Cliente Cadastrado {nome: Sandy &

    Junior, cpf: 12345678900} Solicitação criada {valor: 50.000, motivo: Reforma} Garantia Adicionada {tipo: Casa, valor: 200.000} Nome Alterado {nome: Sandy}
  13. @camposmilaa Cliente preenche cadastro Cliente adiciona documento Doc removido Doc

    adicionado Solicitação criada Cliente remove documento
  14. @camposmilaa Cliente preenche cadastro Cliente adiciona documento Cliente adiciona documento

    Doc adicionado Doc removido Doc adicionado Solicitação criada Cliente remove documento
  15. @camposmilaa Cliente preenche cadastro Cliente adiciona documento Cliente cadastra garantia

    Cliente adiciona documento Garantia adicionada Doc adicionado Doc removido Doc adicionado Solicitação criada Cliente remove documento
  16. @camposmilaa Cliente preenche cadastro Cliente adiciona documento Cliente cadastra garantia

    Cliente adiciona documento Creditas aprova o crédito Crédito aprovado Garantia adicionada Doc adicionado Doc removido Doc adicionado Solicitação criada Cliente remove documento
  17. @camposmilaa CQRS + Event Sourcing Event Sourcing Banco de leitura

    evento 1, id: 2 evento 2, id: 1 evento 1, id: 1 id: 1, estado 2 id: 2, estado 1
  18. @camposmilaa Saldo disponível Conta Corrente 10.000 Conta Poupança 2.000 Extrato

    Conta Corrente data valor descrição 03/05 +7000 Salário 05/05 +4000 Freela 06/05 -1000 Aluguel
  19. @camposmilaa Adiciona atributo aos dados do veículo app/vehicle_data/get_vehicle_data.rb | 2

    +- spec/infra/get_molicar_versions_spec.rb | 10 ++++++---- spec/use_case/fetch_vehicle_data_spec.rb | 2 +- spec/vehicle_data/get_vehicle_data_spec.rb | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-)
  20. @camposmilaa Event Driven Architecture Não é complicada Auditoria "de graça"

    Serviços autônomos Reflete a realidade Escalável
  21. @camposmilaa Não é complicada Auditoria "de graça" Serviços autônomos Reflete

    a realidade Escalável Análises complexas Event Driven Architecture