O que é arquitetura orientada a eventos?

As empresas precisam cada vez mais de sistemas que possam reagir instantaneamente a uma ampla variedade de gatilhos, desde interações com clientes até leituras de sensores. Os modelos tradicionais de solicitação-resposta, embora valiosos, nem sempre oferecem a agilidade ou escalonabilidade necessárias para esses ambientes dinâmicos. A arquitetura orientada a eventos (EDA, na sigla em inglês) pode oferecer um paradigma poderoso para a criação de aplicativos responsivos, resilientes e escalonáveis. É um padrão de arquitetura de software que pode promover a produção, detecção, consumo e reação a eventos.

Entender a arquitetura orientada a eventos

Definição da arquitetura orientada a eventos

A arquitetura orientada a eventos é um modelo para projetar aplicativos de software em que os serviços são acoplados com flexibilidade e se comunicam por meio da produção e do consumo de eventos. Um "evento" significa uma ocorrência significativa ou uma mudança no estado do sistema. Pode ser qualquer coisa, desde um cliente fazendo um pedido, um sensor detectando uma mudança de temperatura, um novo arquivo sendo carregado no armazenamento ou um registro de banco de dados sendo atualizado.

Ao contrário dos modelos tradicionais orientados a solicitações, em que um serviço chama explicitamente outro e espera uma resposta, a EDA permite que os serviços operem de forma assíncrona. Um serviço que gera um evento (o "produtor" ou "editor") simplesmente anuncia que o evento aconteceu. Outros serviços (os "consumidores" ou "assinantes") interessados nesse tipo de evento podem reagir a ele de forma independente e no próprio tempo.

Os principais componentes de uma EDA normalmente incluem:

  • Produtores de eventos: aplicativos ou serviços que geram eventos
  • Consumidores de eventos (ou assinantes): aplicativos ou serviços que recebem e processam eventos
  • Canal de eventos (ou barramento de eventos, agente de mensagens, roteador de eventos): a infraestrutura intermediária que ingere eventos de produtores, filtra e os entrega a consumidores interessados. Esse componente é essencial para separar produtores de consumidores

Como funciona a arquitetura orientada a eventos?

O fluxo de trabalho em uma arquitetura orientada a eventos geralmente segue um padrão consistente.

  • Ocorrência e produção de eventos: uma ação significativa ocorre em um serviço ou sistema. Por exemplo, um usuário pode clicar em um botão "enviar pedido" em um site de e-commerce. O serviço responsável por lidar com essa ação inicial (o produtor de eventos) gera um objeto de evento que contém informações relevantes sobre o que aconteceu, como ID do pedido, itens e detalhes do cliente.
  • Transmissão de eventos: o produtor envia esse evento para um canal de eventos. Esse canal é uma parte dedicada da infraestrutura, como uma fila de mensagens ou um sistema de publicação-assinatura (pub/sub), projetado para lidar com o fluxo de eventos.
  • Filtragem e roteamento de eventos (pelo canal de eventos): o canal de eventos recebe o evento. Em seguida, ele pode aplicar regras de filtragem ou rotear o evento com base no tipo, conteúdo ou tópico para vários consumidores downstream que registraram interesse nesses eventos. Por exemplo, um evento "order_placed" pode ser encaminhado para um serviço de inventário, um serviço de notificação e um serviço de frete.
  • Consumo e processamento de eventos: os serviços interessados (consumidores) recebem o evento do canal. Cada consumidor processa o evento de forma assíncrona e independente. Continuando o exemplo de e-commerce:
  • O serviço de inventário pode diminuir os níveis de estoque dos itens pedidos
  • O serviço de notificação pode enviar um e-mail de confirmação do pedido ao cliente
  • O serviço de frete pode iniciar o processo de logística

Benefícios da arquitetura orientada a eventos

A adoção de uma arquitetura orientada a eventos pode oferecer inúmeras vantagens, principalmente para sistemas complexos e distribuídos.

Escalonabilidade aprimorada

Os serviços em uma EDA são acoplados com flexibilidade e podem ser escalonados de maneira independente. Se um serviço de "processamento de pedidos" estiver sob carga pesada, você poderá escalonar verticalmente apenas esse serviço sem afetar, por exemplo, o serviço de "notificação do usuário".

Resiliência e tolerância a falhas aprimoradas

A arquitetura orientada a eventos pode ajudar na robustez do aplicativo ao isolar falhas de serviço. A natureza desacoplada garante que uma falha em um serviço de consumidor normalmente não se propague e cause uma falha completa do sistema.

Maior agilidade e flexibilidade

Os desenvolvedores podem adicionar, modificar ou remover serviços com impacto mínimo em outras partes do sistema. Novos serviços podem se inscrever em fluxos de eventos atuais para adicionar novas funcionalidades sem exigir mudanças nos produtores de eventos originais.

Respostas em tempo real

A arquitetura orientada a eventos ajuda os sistemas a responder a eventos com notável imediatismo. Esse recurso é especialmente valioso para aplicativos em que a ação rápida é fundamental, incluindo detecção de fraudes, análises em tempo real e monitoramento operacional.

Integração simplificada

A EDA pode servir como uma estrutura flexível para integrar sistemas diferentes, incluindo aplicativos legados, microsserviços modernos e serviços de terceiros. Cada sistema pode publicar e consumir eventos sem precisar de integrações diretas ponto a ponto com todos os outros sistemas.

Extensibilidade

Adicionar novos recursos ou reagir a eventos atuais de novas maneiras geralmente envolve apenas a implantação de um novo serviço de consumidor que se inscreve no fluxo de eventos relevante.

Resolva seus desafios comerciais com o Google Cloud

Clientes novos recebem US$ 300 em créditos para usar no Google Cloud.

Casos de uso da arquitetura orientada a eventos

As características da EDA podem torná-la adequada para uma ampla gama de aplicações em vários setores.

EDA é um padrão comum para ativar a comunicação e o fluxo de dados entre microsserviços. Em vez de chamadas de API diretas e síncronas que podem criar um acoplamento forte, os microsserviços podem publicar eventos quando o estado deles muda, e outros microsserviços podem se inscrever nesses eventos para reagir de acordo.

Aplicativos que lidam com fluxos de dados de alta velocidade, como dados de sensores de IoT, registros de aplicativos, feeds de redes sociais ou dados de mercado financeiro, podem usar EDA para processar, analisar e reagir a essas informações em tempo real. Isso pode ajudar a alimentar painéis, sistemas de alerta ou processos automatizados de tomada de decisões.

Desde o gerenciamento dos níveis de estoque em resposta às vendas até o processamento de pedidos em várias etapas (pagamento, envio, atendimento) e o envio de notificações aos clientes, o EDA pode ajudar a gerenciar os fluxos de trabalho complexos e assíncronos inerentes ao varejo on-line. Se um serviço de processamento de pagamentos for lento, o evento de pedido ainda poderá ser capturado e processado por outros serviços, como a reserva de inventário.

Muitos processos de negócios são inerentemente orientados a eventos. Por exemplo, o envio de uma reivindicação de seguro (evento) pode acionar uma série de atividades downstream: verificação de fraude, avaliação, comunicação com o cliente e, finalmente, processamento de pagamento. A EDA pode ajudar a modelar e automatizar esses fluxos de trabalho de maneira eficaz.

Quando os dados precisam ser mantidos consistentes em vários sistemas ou repositórios de dados, a EDA pode ser usada. Uma mudança em um banco de dados (um evento) pode ser publicada, permitindo que outros bancos de dados ou caches se inscrevam nesses eventos de mudança e se atualizem.

As funções sem servidor (como o Cloud Run functions) geralmente são projetadas para serem orientadas a eventos. Elas são executadas em resposta a vários gatilhos de eventos, como um objeto sendo carregado no armazenamento em nuvem, uma mensagem chegando a uma fila ou uma solicitação HTTP. A EDA é uma opção natural para criar aplicativos usando componentes sem servidor.

A detecção de fraudes em tempo real, o monitoramento da bolsa de valores e o processamento de negociações são aplicativos financeiros essenciais que se beneficiam dos recursos de baixa latência e alta capacidade de processamento do EDA.

Como o Google Cloud usa a arquitetura orientada a eventos?

O Google Cloud oferece um conjunto robusto de serviços que permite aos clientes criar e implantar aplicativos poderosos orientados a eventos. A própria plataforma usa princípios orientados a eventos para ajudar a oferecer serviços escalonáveis e resilientes. Para clientes que criam soluções orientadas a eventos, o Google Cloud oferece vários serviços gerenciados importantes:

  • Pub/Sub: é um serviço de mensagens em tempo real distribuído globalmente, escalonável e confiável que atua como barramento de eventos ou agente de mensagens em uma EDA. O Pub/Sub ajuda os serviços a publicar eventos e outros serviços a se inscreverem nesses eventos de forma assíncrona. Ele desacopla editores de assinantes e oferece suporte a recursos como entrega "pelo menos uma vez", assinaturas push e pull e filtragem de mensagens.
  • Eventarc: o Eventarc pode fornecer uma maneira padronizada de gerenciar o fluxo de eventos conectando fontes de eventos (como alterações de bucket do Cloud Storage, conclusões de jobs do BigQuery ou eventos de aplicativos personalizados) a consumidores de eventos. Ele permite que os desenvolvedores acionem facilmente serviços do Cloud Run, Cloud Run functions ou Workflows em resposta a eventos.
  • Cloud Run: essa plataforma de computação totalmente gerenciada permite executar contêineres sem estado, tornando-os invocáveis por solicitações HTTP ou por eventos do Pub/Sub (geralmente via Eventarc). Com o Cloud Run functions, você pode implantar pequenos trechos de código de finalidade única (funções) que respondem a uma ampla variedade de eventos sem precisar gerenciar servidores ou ambientes de execução. Na arquitetura orientada a eventos, os serviços do Cloud Run podem ser muito eficazes como consumidores de eventos, processando cargas de trabalho acionadas por esses eventos.
  • Workflows: uma plataforma de orquestração totalmente gerenciada que permite definir, implantar e gerenciar fluxos de trabalho sem servidor. Os fluxos de trabalho podem ser acionados por eventos (via Eventarc ou Pub/Sub) e podem coordenar chamadas para vários serviços do Google Cloud e APIs baseadas em HTTP, o que os torna adequados para orquestrar processos de negócios complexos orientados a eventos.
  • Dataflow: para processamento de eventos complexos (CEP) e análise de stream, o Dataflow pode fornecer uma plataforma unificada de processamento de dados em lote e de stream. Ele pode ingerir fluxos de eventos do Pub/Sub, realizar transformações, agregações e análises sofisticadas e, em seguida, gerar resultados para outros sistemas ou acionar outras ações.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.

Google Cloud