Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desenvolvendo sistemas gigantes na internet com arquitetura baseada

526 views

Published on

Palestra realizada na Campus Party 12, no palco Dev League

Published in: Technology
  • Login to see the comments

Desenvolvendo sistemas gigantes na internet com arquitetura baseada

  1. 1. Desenvolvendo sistemas gigantes na internet com arquitetura baseada em eventos
  2. 2. Olá! Paula Santana Desde 2008 em Tecnologia Desenvolvimento Java Arquitetura de Soluções Praia > SP Devs JavaGirl
  3. 3. Agenda ✘ Arquitetura de software ✘ Problemas que surgem ✘ Gigante X Complexo ✘ Event Driven ○ Topologias ○ Padrões ✘ Próximos passos
  4. 4. O que um programador faz?
  5. 5. Expectativa
  6. 6. Realidade
  7. 7. Solução
  8. 8. “Consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares
  9. 9. Monolito
  10. 10. Origem: https://microservices.io/patterns/microservices.html Microservice
  11. 11. Fonte: https://www.appcentrica.com/wp-content/uploads/2016/11/Microservices-Architecture-1.png
  12. 12. 13
  13. 13. Resolve Event Driven Problema
  14. 14. Fonte: https://www.goobec.com.br/blog/redes-sociais-dados-estatisticos-2018/ Sistemas Gigantes
  15. 15. Empresas que utilizam esta abordagem
  16. 16. Sistemas Gigantes Complexos Volume de Requisições / Transações / Operações Muitas integrações Volumetria de DAdos Muitas áreas de Produto Alta disponibilidade Legado
  17. 17. Microsserviços Desenvolvedor Outros Padrões
  18. 18. Eventos Ação ou ocorrência que aconteceu
  19. 19. EventosProdutor Consumidor
  20. 20. Topologia
  21. 21. MediadorApache Camel, Spring Integration ou Mule ESB
  22. 22. Orquestração Pagamento Vendedor Entrega Pedido Mediador
  23. 23. Coreografia Pagamento Vendedor Entrega Pedido Mediador 1. 2. 3. 4.
  24. 24. BrokerKafka, ActiveMq, RabbitMq
  25. 25. Padrões
  26. 26. 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
  27. 27. 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 👍
  28. 28. 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 EntregaBD BD
  29. 29. ● 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
  30. 30. 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
  31. 31. ● Schema de Eventos ● Complexidade ● Dependência Externa ● Auditoria dos dados ● Debugging ● histórico dos eventos ● Permite retornar estado 👍 Fonte de Eventos - Event Sourcing
  32. 32. Próximos Passos
  33. 33. Entenda as soluções de mercado e veja as vantagens de cada uma
  34. 34. Modelos de Entrega - Fila Produtor Financeiro Financeiro Fila
  35. 35. Modelos de Entrega - Tópico Produtor Financeiro Entrega Tópico
  36. 36. Implementação
  37. 37. Dica de Ouro
  38. 38. Benefícios ✘ Menor Acoplamento ✘ Operações Assíncronas ✘ Facilidade em Adicionar novos consumidores ✘ Altamente escalável e distribuído
  39. 39. Problemas ✘ Concorrência ✘ Complexidade ✘ Garantir Entrega ✘ Governança
  40. 40. me solta…. ...que eu vou usar isso no meu projeto.
  41. 41. Obrigada! Dúvidas? @psanrosa13 psanrosa13@gmail.com www.linkedin.com/in/paula-macedo-santana-dev/

×