SlideShare a Scribd company logo
1 of 19
Arquitetura Orientada a Eventos
com Azure Service Bus
Bruno Gouvêa Roldão
Arquitetura Orientada a Eventos
• Consiste em produtores de eventos, que geram um fluxo de eventos, e
consumidores, que escutam estes eventos.
• Eventos são gerados em tempo real.
• Consumidores reagem imediatamente a estes eventos.
• Produtores são desacoplados de consumidores.
Modelos
• Pub/Sub - Quando um evento é publicado, a infraestrutura de
mensagens envia o evento para cada consumidor, e após o evento ser
recebido, ele não pode ser repetido.
• Event Streaming – Eventos são estritamente ordenados dentro de
uma partição e são duráveis. Cada consumidor pode ler qualquer
parte do fluxo, e o consumidor é responsável por avançar sua posição
no fluxo. Novos consumidores podem surgir a qualquer momento e
repetir os eventos.
Quando usar
• Necessidade de alta disponibilidade;
• Multiplos subsistemas que precisam processar os mesmos eventos,
como ocorre em micro serviços;
• Processamento assíncrono e em tempo real, com o mínimo de lag;
• Grande volume e grande velocidade de trafego de dados, como
ocorre em IoT.
Exemplo com microsserviços
Benefícios
• Desacoplamento;
• Sem integrações ponto-a-ponto. É fácil adicionar novos
consumidores;
• Consumidores conseguem reagir imediatamente a eventos;
• Altamente escalável e distribuído;
• Subsistemas possuem visões independentes do fluxo de eventos.
Desafios
• Garantir entrega de eventos;
• Processamento de eventos na ordem ou uma única vez (exactly once);
• Complexidade da modelagem;
• Controlar fluxos complexos de eventos (rollback);
• Controle de saúde dos recursos;
• Exige abstração da infraestrutura para o desenvolvimento ser produtivo.
Message Bus / Message Queue
• Infra estrutura para permitir o padrão Pub/Sub;
• Provê armazenamento temporário de mensagens;
• Provê uma série de recursos para garantir a entrega das mensagens
entre os consumidores;
Azure Service Bus
• Bus as a service;
• Segue o padrão AMQP (Advanced Message Queue Protocol);
• Possui diversas funcionalidades para flexibilizar a distribuição de mensagens
• Sessions
• Dead queue
• Operações em Batch
• Etc...
Padrões de Projeto
• Produtor Consumidor (Pub/Sub);
• Mediator
• Encapsula a forma como vários objetos interagem entre si.
• Desacopla estas interações.
• Command
• Encapsula uma solicitação, enviando esta solicitação a um receptor específico.
• Domain Event
• Ocorre quando uma ação do sistema gera um efeito colateral.
• Socket
Demo - Domínio
Demo - Arquitetura
HANDS ON
Padrão SAGA
• É o padrão de projetos para controlar transações de eventos em cadeia.
• Para implementa-lo, existem dois tipos de estratégias:
• Events/Choreography - Sem coordenação central; cada serviço produz e escuta os
eventos de outros serviços e decide se uma ação deve ser tomada ou não.
• Command/Orchestration - Se define um orquestrador que irá controlar o fluxo de
eventos a serem executados, e estará escutando um outro evento que notificará
sucesso ou falha na cadeia de eventos.
Padrão SAGA - Events/Choreography
Padrão SAGA - Command/Orchestration
Bibliografia
• .Net Microservices Architecture Guidance
• https://dotnet.microsoft.com/learn/web/microservices-architecture
• Event-driven architecture style
• https://docs.microsoft.com/pt-br/azure/architecture/guide/architecture-styles/event-driven
• Saga Pattern | How to implement business transactions using Microservices
• https://blog.couchbase.com/saga-pattern-implement-business-transactions-using-
microservices-part/
OBRIGADO!
Bruno Gouvêa Roldão
https://www.linkedin.com/in/bruno-gouvea-rold%C3%A3o-51a0b918/
https://github.com/Brunogr

More Related Content

Similar to Arquitetura orientada a eventos

Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosVinícius Krolow
 
Virtualizacao
VirtualizacaoVirtualizacao
Virtualizacaohome
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalREduardo Pires
 
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do ProdutoMVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do ProdutoRover Marinho
 
Seminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíquaSeminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíquaRubens Matos Junior
 
[VSSUMMIT] Instrumentação completa com Visual Studio App Center
[VSSUMMIT] Instrumentação completa com Visual Studio App Center[VSSUMMIT] Instrumentação completa com Visual Studio App Center
[VSSUMMIT] Instrumentação completa com Visual Studio App CenterLetticia Nicoli
 
Multicast on Cisco Network
Multicast on Cisco NetworkMulticast on Cisco Network
Multicast on Cisco Networkhome
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaDaniel Silveira
 
Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...
Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...
Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...Demis Gomes
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Luiz Costa
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...tdc-globalcode
 
Aula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNSAula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNSEduardo de Lucena Falcão
 

Similar to Arquitetura orientada a eventos (20)

Mda arq cliente_serv
Mda arq cliente_servMda arq cliente_serv
Mda arq cliente_serv
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenos
 
Virtualizacao
VirtualizacaoVirtualizacao
Virtualizacao
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalR
 
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do ProdutoMVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
MVP ShowCast IT - Mensageria - Exchange 2013 Arquitetura do Produto
 
presentation
presentationpresentation
presentation
 
TEES - Apresentacao Final
TEES - Apresentacao FinalTEES - Apresentacao Final
TEES - Apresentacao Final
 
Seminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíquaSeminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíqua
 
Event-Driven SAGAs com Kafka
Event-Driven SAGAs com Kafka Event-Driven SAGAs com Kafka
Event-Driven SAGAs com Kafka
 
[VSSUMMIT] Instrumentação completa com Visual Studio App Center
[VSSUMMIT] Instrumentação completa com Visual Studio App Center[VSSUMMIT] Instrumentação completa com Visual Studio App Center
[VSSUMMIT] Instrumentação completa com Visual Studio App Center
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
Multicast on Cisco Network
Multicast on Cisco NetworkMulticast on Cisco Network
Multicast on Cisco Network
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 
Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...
Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...
Plataforma de áreas de trabalho virtuais escalável para nuvens privadas - WCG...
 
JBoss Clustering
JBoss ClusteringJBoss Clustering
JBoss Clustering
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
 
O protocolo SCTP para o transporte de vídeo codificado escalonável
O protocolo SCTP para o transporte de vídeo codificado escalonávelO protocolo SCTP para o transporte de vídeo codificado escalonável
O protocolo SCTP para o transporte de vídeo codificado escalonável
 
Aula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNSAula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNS
 

Arquitetura orientada a eventos

  • 1.
  • 2. Arquitetura Orientada a Eventos com Azure Service Bus Bruno Gouvêa Roldão
  • 3. Arquitetura Orientada a Eventos • Consiste em produtores de eventos, que geram um fluxo de eventos, e consumidores, que escutam estes eventos. • Eventos são gerados em tempo real. • Consumidores reagem imediatamente a estes eventos. • Produtores são desacoplados de consumidores.
  • 4. Modelos • Pub/Sub - Quando um evento é publicado, a infraestrutura de mensagens envia o evento para cada consumidor, e após o evento ser recebido, ele não pode ser repetido. • Event Streaming – Eventos são estritamente ordenados dentro de uma partição e são duráveis. Cada consumidor pode ler qualquer parte do fluxo, e o consumidor é responsável por avançar sua posição no fluxo. Novos consumidores podem surgir a qualquer momento e repetir os eventos.
  • 5. Quando usar • Necessidade de alta disponibilidade; • Multiplos subsistemas que precisam processar os mesmos eventos, como ocorre em micro serviços; • Processamento assíncrono e em tempo real, com o mínimo de lag; • Grande volume e grande velocidade de trafego de dados, como ocorre em IoT.
  • 7. Benefícios • Desacoplamento; • Sem integrações ponto-a-ponto. É fácil adicionar novos consumidores; • Consumidores conseguem reagir imediatamente a eventos; • Altamente escalável e distribuído; • Subsistemas possuem visões independentes do fluxo de eventos.
  • 8. Desafios • Garantir entrega de eventos; • Processamento de eventos na ordem ou uma única vez (exactly once); • Complexidade da modelagem; • Controlar fluxos complexos de eventos (rollback); • Controle de saúde dos recursos; • Exige abstração da infraestrutura para o desenvolvimento ser produtivo.
  • 9. Message Bus / Message Queue • Infra estrutura para permitir o padrão Pub/Sub; • Provê armazenamento temporário de mensagens; • Provê uma série de recursos para garantir a entrega das mensagens entre os consumidores;
  • 10. Azure Service Bus • Bus as a service; • Segue o padrão AMQP (Advanced Message Queue Protocol); • Possui diversas funcionalidades para flexibilizar a distribuição de mensagens • Sessions • Dead queue • Operações em Batch • Etc...
  • 11. Padrões de Projeto • Produtor Consumidor (Pub/Sub); • Mediator • Encapsula a forma como vários objetos interagem entre si. • Desacopla estas interações. • Command • Encapsula uma solicitação, enviando esta solicitação a um receptor específico. • Domain Event • Ocorre quando uma ação do sistema gera um efeito colateral. • Socket
  • 15. Padrão SAGA • É o padrão de projetos para controlar transações de eventos em cadeia. • Para implementa-lo, existem dois tipos de estratégias: • Events/Choreography - Sem coordenação central; cada serviço produz e escuta os eventos de outros serviços e decide se uma ação deve ser tomada ou não. • Command/Orchestration - Se define um orquestrador que irá controlar o fluxo de eventos a serem executados, e estará escutando um outro evento que notificará sucesso ou falha na cadeia de eventos.
  • 16. Padrão SAGA - Events/Choreography
  • 17. Padrão SAGA - Command/Orchestration
  • 18. Bibliografia • .Net Microservices Architecture Guidance • https://dotnet.microsoft.com/learn/web/microservices-architecture • Event-driven architecture style • https://docs.microsoft.com/pt-br/azure/architecture/guide/architecture-styles/event-driven • Saga Pattern | How to implement business transactions using Microservices • https://blog.couchbase.com/saga-pattern-implement-business-transactions-using- microservices-part/