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

Desenvolvendo sistemas gigantes na internet com arquiteturas baseadas em eventos - Paula Santana

Desenvolvendo sistemas gigantes na internet com arquiteturas baseadas em eventos - Paula Santana

Paula Santana @Itaú Unibanco palestrou na 3ª edição do DevConf, segue a minibio:

Atua com tecnologia desde 2008, onde começou como professora na Microlins e Microcamp, é formada em técnico de informatica para desenvolvimento de software pelo Centrol Paula Souza, fez Tecnólogo em Gestão Logística na UNIBR e começou a atuar como desenvolvedora Java em 2014, desde o ano passado 2018 esta atuando como arquiteta de soluções. É bem ativa nos grupos que promovem maior representatividade de minorias na tecnologia, começou uma comunidade de Agile no litoral de SP ( Caiçara Ágil) e embarcou em mais comunidades, ajudando no Baixada Nerd e no Devs JavaGirl, tem como lema profissional o compartilhamento de conhecimento.

Opensanca

May 04, 2019
Tweet

More Decks by Opensanca

Other Decks in Programming

Transcript

  1. Desenvolvendo sistemas
    gigantes na internet com
    arquitetura baseada
    em eventos

    View Slide

  2. Olá!
    Paula Santana
    Desde 2008 em Tecnologia
    Desenvolvimento Java
    Arquitetura de Soluções
    Praia > SP
    Devs JavaGirl
    SouJava

    View Slide

  3. O objetivo
    Mostrar principais conceitos sobre arquitetura
    orientada a eventos (EDA), possibilitando que você
    tenha uma base para assuntos mais específicos e um
    senso crítico sobre as abordagens

    View Slide

  4. Agenda
    ✘ Arquitetura de software
    ✘ Problemas que surgem
    ✘ Gigante X Complexo
    ✘ Event Driven
    ○ Topologias
    ○ Padrões
    ✘ Próximos passos

    View Slide

  5. Problema
    Qual problema vamos analisar?

    View Slide

  6. O que um programador faz?

    View Slide

  7. Expectativa

    View Slide

  8. Realidade

    View Slide

  9. Solução

    View Slide

  10. View Slide


  11. Arquitetura de sistemas
    consiste na definição dos
    componentes de software, suas
    propriedades externas, e seus
    relacionamentos com outros
    softwares

    View Slide

  12. Monolito

    View Slide

  13. Origem: https://microservices.io/patterns/microservices.html
    Microservice

    View Slide

  14. Fonte: https://www.appcentrica.com/wp-content/uploads/2016/11/Microservices-Architecture-1.png

    View Slide

  15. 15

    View Slide

  16. Fonte: https://www.goobec.com.br/blog/redes-sociais-dados-estatisticos-2018/
    Sistemas Gigantes

    View Slide

  17. Sistemas Gigantes Complexos
    Volume de
    Requisições /
    Transações /
    Operações
    Muitas
    integrações
    Volumetria
    de DAdos
    Muitas
    áreas de
    Produto
    Alta
    disponibilidade
    Legado

    View Slide

  18. Microsserviços
    Desenvolvedor
    Outros Padrões

    View Slide

  19. Empresas que utilizam esta abordagem

    View Slide

  20. View Slide


  21. Arquitetura Orientada a
    Eventos tem a capacidade de
    detectar eventos e reagir de
    maneira inteligente a eles.

    View Slide

  22. Resolve
    Event
    Driven
    Problema

    View Slide

  23. Eventos
    Ação ou ocorrência que aconteceu.
    Mudança de estado.

    View Slide

  24. Evento
    Mensagem
    Comando

    View Slide

  25. Eventos
    Produtor Consumidor

    View Slide

  26. Topologia

    View Slide

  27. Mediador
    Apache Camel, Spring Integration ou Mule ESB

    View Slide

  28. Orquestração
    Pagamento
    Vendedor
    Entrega
    Pedido
    Mediador

    View Slide

  29. Coreografia
    Pagamento
    Vendedor
    Entrega Pedido
    Mediador
    1. 2. 3. 4.

    View Slide

  30. Broker
    Kafka, ActiveMq, RabbitMq

    View Slide

  31. Padrões

    View Slide

  32. Notificação de
    Evento
    Serviço de
    Clientes
    Serviço de
    Preferências
    Atualiza
    Endereço
    BD
    Broker de Eventos
    cliente xxxx
    atualizou os dados
    Serviço de
    Entrega
    Serviço de
    ofertas

    View Slide

  33. Notificação de
    Evento
    ● Se for usado como
    comando, a larga
    escala pode-se perder
    a visão do fluxo
    ● Onerando o produtor
    com consultas
    ● Baixo nível de
    acoplamento
    ● Produtor não precisa
    saber quem são
    consumidores


    View Slide

  34. Transferência de Estado
    Transportado pelo evento
    Serviço de
    Clientes
    Serviço de
    Preferências
    Atualiza
    Endereço
    BD
    Broker de Eventos
    cliente xxxx
    atualizou os
    dados
    xxxxx
    xxxxx
    xxxx
    Serviço de
    Entrega
    BD BD

    View Slide

  35. ● Duplicação dos dados
    ● Dados fora do domínio
    ● Complexidade no
    consumo de eventos
    ● Alta disponibilidade e
    resiliência


    Transferência de Estado
    Transportado pelo evento

    View Slide

  36. Fonte de Eventos - Event Sourcing
    Profile
    Webapp
    Crédito
    Débito
    Transferência
    Eventos
    Broker de Eventos
    Dados de
    Leitura
    Manipulação
    de Eventos
    Crédito
    Débito
    Transferência

    View Slide

  37. ● Schema de Eventos
    ● Complexidade
    ● Dependência Externa
    ● Auditoria dos dados
    ● Debugging
    ● histórico dos eventos
    ● Permite retornar
    estado


    Fonte de Eventos - Event Sourcing

    View Slide

  38. Próximos Passos

    View Slide

  39. Possibilidades de uso dessa
    abordagem
    ● Arquitetura Microservices / Distribuída
    ● Aumento nas integrações
    ● Volumetria dos dados
    ● Responsividade
    ● Escalabilidade

    View Slide

  40. Entenda as
    soluções de
    mercado e veja
    as vantagens
    de cada uma

    View Slide

  41. View Slide

  42. Modelos de Entrega - Fila
    Produtor
    Financeiro
    Financeiro
    Fila

    View Slide

  43. Modelos de Entrega - Tópico
    Produtor
    Financeiro
    Entrega
    Tópico

    View Slide

  44. Implementação

    View Slide

  45. Benefícios
    ✘ Menor Acoplamento
    ✘ Operações Assíncronas
    ✘ Facilidade em Adicionar novos
    consumidores
    ✘ Altamente escalável e distribuído
    ✘ Facilidade em evolução
    ✘ Facilidade em experimentação

    View Slide

  46. Problemas
    ✘ Concorrência
    ✘ Complexidade
    ✘ Garantir Entrega
    ✘ Governança

    View Slide

  47. Dica de Ouro

    View Slide

  48. me solta….
    ...que eu vou usar isso no meu projeto.

    View Slide

  49. Obrigada!
    Dúvidas?
    @psanrosa13
    [email protected]
    www.linkedin.com/in/paula-macedo-santana-dev/

    View Slide