Os clientes gostam de estar cientes dos eventos quando eles acontecem. Depois que um cliente pede um novo par de sapatos e recebe uma notificação de que a compra foi enviada, obter atualizações de status de remessa atualizadas antes de chegar melhora a experiência geral do cliente.
As atualizações sobre seu pedido são eventos que acionam uma resposta em umaarquitetura orientada a eventos (EDA). Um EDA é um projeto de software que reage a mudanças de estado (eventos) e transmite esses eventos usando uma arquitetura desacoplada. Essa arquitetura desacoplada pode empregar vários padrões de design, como o padrão publicar-assinar (pub-sub), em que um produtor publica um evento e um assinante observa os eventos, mas nenhum depende do outro.
O streaming de eventos e o fornecimento de eventos representam duas maneiras pelas quais as organizações podem potencializar seus EDAs.
Com o streaming de eventos, há um fluxo contínuo de dados fluindo entre os sistemas, com os dados representando um novo estado de eventos transmitidos usando o padrão pub-sub. A fonte de eventos, por outro lado, armazena todos os novos eventos em um log de anexo. Isso serve como uma fonte de verdade contendo uma ordem cronológica de eventos e contextos.
O fornecimento de eventos e o streaming de eventos geralmente são usados lado a lado em EDAs, mas é importante distinguir os dois, pois eles funcionam de maneira muito diferente. Enquanto os fluxos de eventos promovem uma comunicação mais acessível entre os sistemas, o fornecimento de eventos fornece o histórico de eventos armazenando novos eventos em um log apenas anexado.
Aqui, discutiremos os dois métodos de coordenação de eventos e forneceremos alguns casos de uso para cada um.
O streaming de eventos emprega a abordagem pub-sub para permitir uma comunicação mais acessível entre os sistemas. No padrão de arquitetura pub-sub, os consumidores se inscrevem em um tópico ou evento e os produtores publicam nesses tópicos para consumo dos consumidores. O design pub-sub separa os sistemas de editor e assinante, facilitando o dimensionamento de cada sistema individualmente.
Os sistemas de editor e assinante se comunicam por meio de um intermediário de mensagem como
O streaming de eventos envolve o fluxo contínuo de dados de fontes como aplicativos, bancos de dados, sensores e dispositivos IoT. Os fluxos de eventos empregam processamento de fluxo, no qual os dados são processados e analisados durante a geração. Esse processamento rápido se traduz em resultados mais rápidos, o que é valioso para empresas com uma janela de tempo limitada para agir, como acontece com qualquer aplicativo em tempo real.
O streaming de eventos oferece várias vantagens para as empresas; aqui estão alguns:
A transmissão e o processamento de eventos oferecem às organizações a capacidade de enriquecer a experiência de seus clientes. Por exemplo, um cliente que faz um pedido de jantar pode obter atualizações de status instantâneas, notificando-o quando o veículo de entrega estiver a caminho de seu local ou se já tiver chegado. Essa experiência aprimorada do cliente se traduz em mais confiança, melhores avaliações e receita aprimorada.
Aplicativos como PayPal e outros aplicativos de tecnologia financeira podem empregar streaming de eventos para fornecer detecção de fraude online para aumentar a segurança usando monitoramento em tempo real. Os algoritmos de fraude testam as circunstâncias de um evento (compra ou transação) usando análise preditiva para detectar um desvio da norma (um outlier). Se o sistema detectar um evento atípico ou incomum, ele interromperá a transação ou impedirá que o cartão a conclua.
Ao analisar os fluxos de eventos, as ferramentas industriais podem registrar métricas de desempenho e integridade para avaliar a integridade do equipamento. Esse recurso permite que as organizações realizem manutenção preditiva em máquinas antes de uma falha total, que custa mais para consertar. Na manufatura, por exemplo, as organizações podem empregar Pulsar streams para agregar e processar dados de parâmetros da máquina, como temperatura ou pressão. Os engenheiros poderiam definir a temperatura máxima de uma máquina e definir um alerta que seria acionado se essa temperatura fosse excedida. Os operadores de máquinas poderiam realizar verificações e manutenção antes que problemas mais dispendiosos ocorressem.
O streaming de eventos é essencial para empresas e aplicativos que transmitem um grande volume de dados e dependem de insights rápidos e acionáveis. Esses aplicativos incluem comércio eletrônico, comércio financeiro e dispositivos IoT.
Os aplicativos de negociação financeira empregam streaming de eventos para publicar eventos sensíveis ao tempo em que os clientes desejam agir imediatamente. Por exemplo, os usuários podem se inscrever em um serviço de back-end que envia atualizações sobre eventos específicos, como uma mudança no preço das ações, para permitir uma tomada de decisão oportuna.
O streaming de eventos também possui aplicativos de detecção de riscos e fraudes em sistemas financeiros que processam pagamentos e outras transações (e bloqueiam transações fraudulentas). Algoritmos de fraude definidos podem bloquear transações suspeitas analisando os dados imediatamente após sua geração.
O fornecimento de eventos armazena dados como eventos em logs anexados. O processo captura cada alteração no estado de um aplicativo em um objeto de evento e armazena esses objetos de evento como logs em ordem cronológica. Com o fornecimento de eventos, os armazenamentos de eventos compilam o estado de uma entidade de negócios como um evento em uma sequência, e uma alteração no estado, como novos pedidos ou o cancelamento de um pedido, anexa o estado mais recente à lista de eventos.
Para que o fornecimento de eventos funcione com eficiência e consuma recursos mínimos, cada objeto de evento deve conter apenas os detalhes necessários. Isso minimiza o espaço de armazenamento e evita o uso de recursos valiosos no processamento de dados que levam a insights não acionáveis.
As lojas de eventos compilam eventos de negócios e contexto; anexar fluxos longos aos logs de eventos consome rapidamente o armazenamento do banco de dados. Manter apenas os contextos de eventos necessários como parte do objeto de evento ajuda a liberar espaço de armazenamento para adicionar vários logs de eventos, que geram insights acionáveis.
As organizações podem optar por usar “instantâneos” para ajudar a otimizar o desempenho nesses casos. Os instantâneos permitem o armazenamento do estado atual da entidade. Conhecer o estado atual pode envolver apenas extrair os instantâneos e recriar uma linha do tempo para conhecer o estado mais atual.
Vamos ilustrar isso. Suponha que temos um banco de dados que faz um balanço de itens recentes em uma loja de comércio eletrônico:
A maioria dos bancos de dados armazena apenas o estado atual. Se fôssemos contabilizar a jornada de como chegamos ao valor final do estoque de 91, não haveria certeza ou clareza de como chegamos lá. O fornecimento de eventos registra todas as alterações de estado em um log, possibilitando o rastreamento do histórico de eventos para análise de causa raiz e auditoria.
As organizações de assistência médica são um dos setores mais fortemente regulamentados, com regulamentos em constante mudança para proteger as informações do cliente. Eles precisam de uma solução de armazenamento flexível que se adapte às crescentes necessidades de dados, mantendo a fácil migração de sistemas legados para tecnologias mais recentes.
Ao empregar armazenamentos de eventos como sua única fonte de verdade, os sistemas de assistência médica podem confiar no estado imutável dos logs de eventos para o estado real de seus dados e fazer projeções valiosas empregando processamento de fluxo em tempo real. As empresas de varejo e comércio eletrônico podem obter um melhor conhecimento de seus clientes analisando lojas de eventos grandes e duráveis, o que as ajuda a criar experiências de cliente mais personalizadas.
Existem algumas semelhanças entre o streaming de eventos e o fornecimento de eventos. Por um lado, cada método de coordenação de eventos emprega uma arquitetura de microsserviços desacoplada, que ajuda a melhorar a escalabilidade e o desempenho.
Embora os armazenamentos e fluxos de eventos difiram quanto à durabilidade do estado, eles são essenciais para fornecer os estados de eventos atuais dos aplicativos para uso na análise e na tomada de decisões de negócios. Além disso, ambos os métodos de coordenação de eventos possuem recursos de armazenamento duráveis, embora os armazenamentos de eventos geralmente ofereçam armazenamento estendido mais longo do que os fluxos de eventos.
Aqui, vamos nos aprofundar mais em algumas diferenças importantes entre streaming de eventos e fornecimento de eventos.
O streaming de eventos é ideal para uma comunicação mais acessível entre dados em movimento, desvinculando os editores dos assinantes e facilitando a publicação de milhões de mensagens com alto desempenho. Por outro lado, o fornecimento de eventos ajuda a estabelecer o histórico de eventos armazenando cada novo estado de uma entidade em um log somente anexado.
Para origem de eventos, os dados existem em repouso porque os eventos são imutáveis. No entanto, os fluxos de eventos envolvem dados sempre em trânsito, passando entre vários sistemas de armazenamento, como bancos de dados, sensores e aplicativos.
O streaming de eventos e o fornecimento de eventos ajudam a coordenar eventos em uma arquitetura orientada a eventos. Embora seu uso e valor sejam diferentes, eles funcionam bem juntos para ajudar a criar um aplicativo durável e de alto desempenho.
O streaming de eventos emprega o padrão pub-sub desacoplado para transmitir dados continuamente de várias fontes, o que ajuda a impulsionar a tomada de decisões de negócios. Infelizmente, embora as ferramentas de streaming de eventos possam possuir armazenamento durável, elas não são projetadas para armazenar mensagens por muito tempo, pois os recursos de armazenamento durável persistem apenas o tempo suficiente para torná-los tolerantes a falhas e resilientes.
Pode-se ver o fornecimento de eventos como um subconjunto ou componente do streaming de eventos. A fonte de eventos anexa um novo evento à lista atual de eventos de maneira ordenada. Ele também pode atuar como uma fonte de verdade para auditorias confiáveis e obter o estado atual dos eventos a qualquer momento. O fornecimento de eventos é crucial para setores financeiros com requisitos regulatórios e de auditoria pesados e uma loja confiável para rastrear e construir o estado atual dos eventos. Por outro lado, o streaming de eventos é crucial em aplicativos de negociação financeira em que as ações têm uma janela com limite de tempo e exigem ação imediata.
EDA não é necessariamente um destino. É um caminho a seguir, impulsionando determinadas características e desempenho do sistema. Por exemplo, o fornecimento de eventos separa uma coleção de microsserviços para que eles se tornem menos dependentes uns dos outros. Isso gera resiliência e iteração mais fácil, entre outros benefícios. Combinados com o fornecimento de eventos, os microsserviços ganham a capacidade de reproduzir eventos, bem como um log completo de alterações para um determinado recurso, como o perfil de um usuário. Esse tipo de arquitetura abre novas possibilidades dentro dos sistemas existentes.
Também publicado aqui.