O que é Arquitetura Orientada a Eventos?

A arquitetura orientada a eventos ( EDA ) é um padrão de design de software que permite a uma organização detectar "eventos" ou momentos de negócios importantes (como uma transação, visita ao local, abandono do carrinho de compras, etc.) e agir sobre eles em tempo real ou quase real. Este padrão substitui a arquitetura tradicional de “solicitação / resposta”, em que os serviços teriam que esperar por uma resposta antes de poderem passar para a próxima tarefa. O fluxo da arquitetura orientada a eventos é executado por eventos e é projetado para responder a eles ou realizar alguma ação em resposta a um evento.

Diagrama de arquitetura orientada a eventos

A arquitetura orientada a eventos costuma ser chamada de comunicação “assíncrona”. Isso significa que o remetente e o destinatário não precisam esperar que o outro passe para a próxima tarefa. Os sistemas não dependem dessa mensagem. Por exemplo, uma chamada telefônica é considerada síncrona ou mais na mesma linha da arquitetura tradicional de “solicitação / resposta”. Alguém liga para você e pede que você faça algo, o solicitante espera enquanto o respondente conclui a tarefa e, em seguida, ambas as partes desligam. Um exemplo assíncrono seria uma mensagem de texto. Você envia uma mensagem e, em alguns casos, nem sabe para quem está enviando ou se alguém está ouvindo, mas não está esperando uma resposta.

Artigo de arquitetura orientada a eventos
Escolha entre Apache Kafka, Pulsar e outras tecnologias de mensagens
Como escolher a tecnologia de mensagens certa para o seu negócio? Leia nosso novo Whitepaper para saber mais.

A evolução da arquitetura orientada a eventos

Nos últimos anos, houve um movimento que passou do foco em dados em repouso (arquitetura orientada a serviços) para o foco em eventos (arquitetura orientada a eventos). Estamos mudando do acúmulo de dados e lagos de dados (data lakes) para nos concentrar nos dados em andamento e acompanhá-los enquanto estão se movendo de um lugar para outro. Tradicionalmente, a maioria dos sistemas opera no que se pensa como o modelo centrado em dados, em que os dados são a fonte da verdade. A mudança para a arquitetura orientada a eventos significa passar de um modelo centrado em dados para um modelo centrado em eventos. No modelo orientado a eventos, os dados ainda são importantes, mas os eventos se tornam o componente mais importante. Já no modelo orientado a serviços, a maior prioridade era garantir que nenhum dado fosse perdido. Com a arquitetura orientada a eventos, a prioridade é garantir que você responda aos eventos conforme eles acontecem. Porque existe uma lei de rendimentos decrescentes quando se trata de eventos, quanto mais velhos eles ficam, menos valiosos eles são. No entanto, hoje, a arquitetura orientada a serviços e a arquitetura orientada a eventos costumam ser usadas conjuntamente.

A arquitetura orientada a eventos geralmente usa uma analogia de log para manter o controle das coisas. Os analistas falam sobre os eventos como coisas imutáveis que aconteceram. E se você quiser descobrir o que aconteceu no passado, pode voltar e repetir o registro. Já no modelo centrado em dados, você se concentra principalmente no estado dos dados como estão agora. E então a última analogia que os analistas usam ao descrever a diferença entre arquiteturas centradas em dados e centradas em eventos é que eles frequentemente as comparam entre um repositório de informações e um sistema nervoso que transporta mensagens pela empresa.

Ao usar uma arquitetura orientada a eventos, você tem produtores de eventos que geram e enviam notificações de eventos e pode ter um ou mais consumidores de um evento, onde o recebimento do evento aciona a lógica de processamento. Por exemplo, digamos que a Netflix acabou de enviar um novo filme. Pode haver vários aplicativos ouvindo ou aguardando essa notificação, que então acionam seus próprios sistemas internos para publicar suas próprias informações sobre esse evento para seus usuários. Isso difere das mensagens tradicionais de solicitação-resposta porque os aplicativos ainda estão em execução e, embora possam estar ouvindo esse evento, não ficam paralisados enquanto esperam por ele. E eles são capazes de responder quando a mensagem é publicada. Assim, muitos serviços podem ser executados em paralelo.

O que é um evento?

Um evento é definido como uma mudança de estado de algum sistema comercial importante. Por exemplo, alguém compra um produto, outra pessoa faz o check-in para um voo ou um ônibus chega atrasado em algum lugar. E se pensarmos bem, os eventos existem em todos os lugares e estão constantemente acontecendo, não importa o setor. Eles estão presentes em qualquer negócio. Isso inclui qualquer coisa que crie uma mensagem. Ao ser produzida, publicada, detectada ou consumida uma mensagem é considerada um evento. O evento é separado da mensagem, porque enquanto o evento é a ocorrência, a mensagem é a notificação móvel que retransmite a ocorrência. Na arquitetura orientada a eventos, um evento provavelmente desencadeará uma ou mais ações ou processos em resposta à sua ocorrência. Eis aqui alguns exemplos de evento:

  • Solicitação para redefinir uma senha
  • Um pacote chegou, foi entregue ao seu destino
  • Um armazém atualiza seu estoque
  • Uma tentativa de acesso não autorizado foi negada

Cada um desses eventos provavelmente desencadeará uma ou mais ações ou processos em resposta. Uma resposta pode ser simplesmente registrar o evento para fins de monitoramento. Outros podem ser:

  • Um e-mail para redefinir a senha é enviado ao cliente
  • O tíquete de venda está fechado
  • Um pedido de mais alface (ou qualquer outro material que esteja acabando) é feito
  • Uma conta está bloqueada e o pessoal de segurança é notificado

Com a arquitetura orientada a eventos, quando uma notificação de evento é enviada, o sistema capta que algo aconteceu como ocorreu uma mudança de estado e espera enviar a resposta a quem a solicitar, sempre que solicitar. O aplicativo que recebeu essa mensagem pode responder ou esperar para responder até que ocorra a mudança de estado que ele está aguardando.

Os aplicativos construídos em torno de uma arquitetura orientada a eventos permitem aplicativos de negócios digitais mais ágeis, escaláveis, contextuais e responsivos.

Atue em tempo real com processamento de eventos contextuais
Atue em tempo real com processamento de eventos contextuais
Aprenda 5 abordagens de processamento de eventos e como tomar decisões melhores, mais rápidas e mais inteligentes em nosso mais recente resumo de solução.

Como funciona a arquitetura orientada a eventos?

Os componentes de uma arquitetura orientada a eventos podem incluir três partes: produtor, consumidor, corretor. O corretor pode ser opcional, principalmente quando você tem um único produtor e um único consumidor que estão em comunicação direta entre si e o produtor apenas envia os eventos ao consumidor. Um exemplo seria um produtor que está enviando apenas para um banco de dados ou armazém de dados para que os eventos sejam coletados e armazenados para análise. Mais comumente em empresas, você tem várias fontes enviando todos os tipos de eventos com um ou mais consumidores interessados em alguns ou todos esses eventos.

Vejamos um exemplo. Se você é um varejista, pode estar coletando todas as compras que estão acontecendo em todas as suas lojas em todo o mundo. Você as está inserindo em sua arquitetura orientada a eventos que está atenta a fraudes, enviando-as a um processador de cartão de crédito ou quaisquer ações que precisem acontecer a seguir. Para um fabricante, você tem todos os tipos de dados saindo de seu equipamento que contam fatos como temperatura e pressão para que você possa monitorar esses eventos em tempo real e tomar ações, como prever falhas ou agendar manutenção, dependendo do que os dados estão dizendo a você .