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.