O documento discute arquitetura orientada a eventos para sistemas complexos e gigantes na internet, apresentando conceitos como eventos, topologias de eventos, padrões como notificação de eventos e transferência de estado, além de abordar implementações e benefícios desta arquitetura.
2. Olá!
Paula Santana
Desde 2008 em Tecnologia
Desenvolvimento Java
Arquitetura de Soluções
Praia > SP
Devs JavaGirl
SouJava
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
4. Agenda
✘ Arquitetura de software
✘ Problemas que surgem
✘ Gigante X Complexo
✘ Event Driven
○ Topologias
○ Padrões
✘ Próximos passos
11. “
Arquitetura de sistemas
consiste na definição dos
componentes de software, suas
propriedades externas, e seus
relacionamentos com outros
softwares
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
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
👍
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
EntregaBD BD
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
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
37. ● Schema de Eventos
● Complexidade
● Dependência Externa
● Auditoria dos dados
● Debugging
● histórico dos eventos
● Permite retornar
estado
👍
Fonte de Eventos - Event Sourcing
39. Possibilidades de uso dessa
abordagem
● Arquitetura Microservices / Distribuída
● Aumento nas integrações
● Volumetria dos dados
● Responsividade
● Escalabilidade