emmanuelnerisouza
903 views
44 slides
Oct 16, 2020
Slide 1 of 44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
About This Presentation
A arquitetura orientada a eventos é um modelo de arquitetura de sistemas diferente do tradicional modelo orientado a solicitações, onde os dados são modelados e trafegados no formato de eventos ocorridos nos sistemas gerando um maior reaproveitamento e desacoplamento na troca de informações en...
A arquitetura orientada a eventos é um modelo de arquitetura de sistemas diferente do tradicional modelo orientado a solicitações, onde os dados são modelados e trafegados no formato de eventos ocorridos nos sistemas gerando um maior reaproveitamento e desacoplamento na troca de informações entre os serviços. O modelo se encaixa em diversos contextos e vem ganhando adoção em conjunto com microserviços e plataformas de streamings de dados, como o Kafka, principalmente em cenários de grande volume de dados e alta disponibilidade. Com isso, o objetivo desta apresentação é contextualizar e discutir o trade off de abordagens orientadas a eventos em aplicações distribuídas.
Size: 6.58 MB
Language: pt
Added: Oct 16, 2020
Slides: 44 pages
Slide Content
ARQUITETURA ORIENTADA A EVENTOS
Emmanuel Neri
@emmanuelnerii
www.emmanuelneri.com.br
DESACOPLANDO A COMUNICAÇÃO ENTRE SERVIÇOS
EMMANUEL NERI
‣Mestre em Desenvolvimento de Tecnologia
‣Desenvolvedor desde 2010
‣Atualmente trabalhando com Go
‣Especialista de Tecnologia na
‣Membro do
TRENDS
ARQUITETURA
PADRÕES DE ARQUITETURA
Layered
Clean ArchitectureEvent-driven
Service-Oriented CQRS
PADRÕES DE ARQUITETURA ORIENTADA A EVENTOS
Mediator
Broker
ARQUITETURA ORIENTADA A EVENTOS
The event-driven architecture pattern is a popular
distributed asynchronous architecture pattern used to produce highly
scalable applications. It is also highly adaptable and can be used for
small applications and as well as large, complex ones. The event-driven
architecture is made up of highly decoupled, single-purpose event
processing components that asynchronously receive and process
events.
Mark Richards
ARQUITETURA ORIENTADA A EVENTOS
Event-driven architecture (EDA) is a software design pattern that
enables an organization to detect “events” or important business
moments (such as a transaction, site visit, shopping cart abandonment,
etc) and act on them in real time or near real time.
tibco.com
Event-driven systems reflect how modern businesses actually
work–thousands of small changes happening all day, every day.
spring.io
EVENTOS
EVENTO = ACONTECIMENTO
‣UsuarioCriado
‣TransacaoAprovada
‣ProdutoAdicionado
An event can be defined as "a significant change in state"
Event-Driven Applications: Costs, Benefits and Design Approaches
ARQUITETURA ORIENTADA A EVENTOS
UsuarioCriado
TransacaoAprovada
ProdutoAdicionado
ARQUITETURA ORIENTADA A EVENTOS
Cliente criado
Cliente
OnBoarding
ARQUITETURA ORIENTADA A EVENTOS
Transação Aprovada
Transação
Bonificação
Agendamento
ARQUITETURA ORIENTADA A EVENTOS
Pedido Criado
Pedidos
Pagamentos
Entregas
Pagamento Aprovado
Pedido Confirmado
PENSANDO EM EVENTOS
‣Evento “de comando”
‣Eu entro na sala, ligo o interruptor de luz e a luz se acende
‣Evento “Event First”
‣Eu entro na sala, é gerado um evento “entrei na sala” e a luz se
acende
https://www.confluent.io/blog/journey-to-event-driven-part-1-why-event-first-thinking-changes-everything/
FORMAS DE INTERAÇÕES
Designing Event-Driven Systems
ARQUITETURA ORIENTADA A EVENTOS
‣Event Notification
‣Event-Carried State Transfer
‣Event-Sourcing
EVENT NOTIFICATION
Faturas
faturaEncerrada
Auditoria
SISTEMA DE
ARQUIVOS
EVENT NOTIFICATION
TIMESTAMP
REQUEST ID
URL
ArquivoCriado
05/29/2020 05:50:06
2bc7bd56-80f1-436e-84f6-c7f3099bd0ef
https://filestore/nfe/99902
TIMESTAMP
ID
TYPE
VendaModificada
09/30/2020 20:00:00
662aa64b-0f70-4fc1-96a0-046d46e142ba
OrderCreatedEvent
EVENT-CARRIED STATE TRANSFER
Transação
transacaoConfirmada
Agendamento de pagamentos
EVENT-CARRIED STATE TRANSFER
EMAIL
NAME
ROLES
UsuarioCriado [email protected]
User
[ADMIN]
ID
CUSTOMER ID
CUSTOMER DOCUMENT
CUSTOMER NAME
VALUE
DATETIME
TYPE
Transação
9c64f9c1-c02f-4b57-a8c0-7e5550b49ace
a7e8a733-78e3-4cac-bda2-ea7b16395949
59.792.056/0001-79
Customer
100.00
09/29/2020 14:00:06
APPROVED
DOMAIN EVENTS X EVENT SOURCE
Event Sourcing ensures that all changes to application state are stored as a
sequence of events.
Martin Fowler
Domain Events
‣Pedido foi confirmado
‣Transação foi aprovada
‣Novo produto foi cadastrado
Event source
‣Iniciado pedido para o cliente Teste
‣Adicionado produto celular de valor
1999 no pedido 001
‣Adicionado produto capa protetora
de valor 80 no pedido 001
‣Finalizado pedido 001
APIS NA ARQUITETURA ORIENTADA A EVENTOS
CONSULTAS
/clientes /transacoes
EVENTOS
CONSULTAS
EVENTOS
/query
CONSULTAS
/clientes /transacoes
ESCRITAS
ESCRITAS
Notificação
Recebidoapi
Criado / Processado
Contexto
CONSISTÊNCIA EVENTUAL
Eventual consistency
ALGUMAS MUDANÇAS
‣Responses
‣200 (Ok) -> 201 (Created) / 202 (Accepted)
‣Calbacks / webhook
‣Dados “não prontos"
‣Tempo de execução
‣Atenção nos Logs e monitoria
‣Monitoria de negócio
ARMADILHAS
‣ Consistência “Fake”
‣Bloquear requisição até processo assíncrona terminar
‣ Polling esperando o término da operação assíncrona
ATENÇÃO
‣Mudanças estruturais nos eventos são complicadas
‣Remoção de campos
‣Tolerant Reader
‣Reprocessamento dos eventos
‣Consumer idempotente
‣Conceitos de garantia de entrega
‣At-most-once / At-least-once / Exactly-once