Bankly Labs

O que é Event Sourcing e Event Streaming?

Escrito por Redação Bankly | 12/07/2023 19:34:42

 

Os conceitos de Event Sourcing e Event Streaming são relacionados à manipulação de eventos, que, quando combinados, oferecem uma abordagem poderosa para capturar, processar e armazenar eventos em sistemas distribuídos.

Conheça cada um, sua importância e alguns casos práticos de usabilidade:

 

  • O que é Event Sourcing?

É um padrão de arquitetura de software no qual o estado de uma entidade, por exemplo, uma Conta ou uma Transação Pix, é determinado pela sequência de eventos que ocorreram para determinada operação. Nesse padrão, em vez de armazenar apenas o estado atual da entidade, cada evento representa uma mudança de estado e é armazenado de forma imutável e em sequência, que se torna a fonte de verdade para a entidade.

 

Com essa técnica é possível reconstruir o estado atual de uma entidade aplicando os eventos na ordem em que eles ocorreram. Essa abordagem facilita a recuperação de estados anteriores, podendo “retornar na linha do tempo” por meio dos eventos. Além disso, quando combinado com a estratégia de Event-Log, registrando os eventos na ordem cronológica em que ocorreram em um sistema, se tornam uma ferramenta poderosa de auditoria e conformidade dos sistemas para análise e depuração de problemas.

 

Geralmente Event Sourcing é usado em conjunto com outro padrão de arquitetura, o CQRS (Command Query Responsibility Segregation). Este padrão separa o processamento em comandos e consultas, permitindo otimizar cada operação conforme suas necessidades específicas, oferecendo maior escalabilidade para sistemas complexos.

 

  • O que é Event Streaming?

É uma estratégia empregada em sistemas distribuídos que permite a produção, transmissão, armazenamento e processamento de eventos em tempo real. É projetado para lidar com grandes volumes de eventos de forma eficiente e resiliente, garantindo que os dados sejam consistentes em todo o sistema.

 

Essa abordagem pode utilizar tecnologias open source como Apache Kafka, RabbitMQ Streams ou soluções proprietárias Cloud Native como Amazon Kinesis e Azure Event Hub para criar pipelines de eventos e possibilitar a troca de informações entre produtores e consumidores.

 

O Event Streaming possibilita que os diversos componentes de sistema distribuído reajam instantaneamente aos eventos à medida que eles ocorrem, promovendo uma experiência mais responsiva para os clientes das aplicações.

 

Conexão entre Event SourcingEvent Streaming

A sinergia entre os dois conceitos aprimora a eficiência e capacidade de adaptação dos sistemas, trazendo uma gama de benefícios em termos de escalabilidade, flexibilidade e resiliência. A integração dessas duas abordagens potencializa suas características individuais e cria um ambiente de processamento e armazenamento de eventos mais robusto.

 

Juntos, Event Sourcing e Event Streaming possibilitam a construção de sistemas capazes de suportar grandes volumes de eventos, bem como gerenciá-los de forma eficiente. Essa combinação fornece um ambiente propício para decisões baseadas em dados confiáveis e permite uma rápida adaptação à mudanças para atender as necessidades do negócio. Além disso, eles proporcionam às organizações uma visão holística e confiável dos eventos em seu sistema, permitindo melhorar a experiência do cliente por meio de uma maior consistência e responsividade.

 

A implementação de uma arquitetura baseada em Event Sourcing e Event Streaming traz algumas vantagens técnicas e competitivas.

 

Trazemos 5 delas a seguir:

  • Escalabilidade e tolerância a falha:

    A arquitetura baseada a eventos possibilita desacoplamento entre componentes críticos do sistema. Isso significa que os serviços podem ser desenvolvidos, implantados e dimensionados de forma independente, muitas das vezes autônomas, reduzindo a necessidade de coordenação entre equipes e melhorando a capacidade de resposta às mudanças no negócio. Componentes que demandam por maior capacidade de processamento podem ser escalados de maneira isolada, horizontalmente ou verticalmente, com menor impacto nos custos de infraestrutura.

  • Auditoria e conformidade:

    A persistência imutável dos eventos proporciona maior rastreabilidade por meio do registro completo do histórico de mudanças nas entidades do sistema, simplificando a auditoria e a análise de problemas, além de facilitar a conformidade com regulamentações, como a GDPR ou a Lei Geral de Proteção de Dados (LGPD), que exigem transparência no processamento de dados e a capacidade de provar a integridade dos sistemas.

  • Resiliência e recuperação de desastres:

    A arquitetura de Event Sourcing e Event Streaming oferece maior resiliência diante de falhas e desastres sistêmicos. Essa resiliência decorre do fato de que os eventos são distribuídos e armazenados de maneira redundante, facilitando a recuperação dos sistemas após falhas e minimizando perdas de dados, garantindo assim a continuidade dos negócios. Outra vantagem dessa arquitetura é a capacidade de armazenar os eventos em sequência. Isso possibilita reverter o estado das entidades comprometidas para um ponto específico na linha do tempo. Tal característica mostra-se especialmente útil em situações de falhas que comprometam a integridade dos dados.

  • Tempo real e análise de dados:

    A sinergia de Event Sourcing e Event Streaming habilita o processamento e a análise de dados em tempo real, proporcionando insights valiosos que orientam decisões estratégicas e otimizam processos. Isso pode impulsionar a eficiência operacional e conferir uma vantagem competitiva distinta no mercado. Ainda, a disponibilidade instantânea de dados viabiliza a implementação de algoritmos de aprendizado de máquina e inteligência artificial, potencializando análises preditivas e prescritivas, abrindo caminho para uma tomada de decisão mais informada e precisa.

  • Adaptação e evolução do sistema:
    A arquitetura baseada em eventos permite uma maior adaptabilidade às mudanças nos requisitos do negócio. Ao armazenar eventos, é possível implementar novas funcionalidades e comportamentos sem afetar os dados históricos. Isso facilita a evolução contínua do sistema e a adoção de novas tecnologias e práticas de desenvolvimento.

E quais são os trade-offs dessa tecnologia?

Nem tudo é perfeito, embora as abordagens de Event Sourcing e Event Streaming tenham muitas vantagens, também trazem consigo certa complexidade ao sistema. É essencial tomar medidas adequadas para garantir que esses desafios não prejudiquem a estratégia da empresa. A seguir, apresentamos 5 considerações cruciais que devem ser levadas em conta ao optar por essa arquitetura:

  • Complexidade e curva de aprendizado:

    A adoção de Event Sourcing e Event Streaming pode introduzir uma complexidade adicional ao sistema e exigir um tempo maior de aprendizado por parte da equipe de desenvolvimento. Torna-se crucial investir em capacitação e documentação de qualidade, assim como adotar ferramentas e bibliotecas que simplifiquem a implementação desses padrões, suavizando assim a curva de aprendizado e maximizando a eficiência.

  • Performance e latência:
    O processamento e armazenamento de eventos podem levar a um aumento na latência, especialmente quando comparados a sistemas que utilizam armazenamento de estado tradicional. Para mitigar esse problema, é fundamental otimizar o desempenho do sistema e considerar o uso de estratégias de cache e indexação para acelerar consultas e acesso aos dados. Considerar o desacoplamento usando outros padrões de arquitetura como CQRS, citado anteriormente, aumenta o poder de processamento de comandos e consultas em um sistema distribuído.

  • Consistência eventual:
    A natureza distribuída dos sistemas baseados em eventos nos coloca diante de consistência eventual, o que significa que os dados não serão consistentes ao mesmo tempo em todos os componentes do sistema. Para lidar com esse desafio, é necessário desenvolver estratégias de compensação e verificação de consistência e integridade dos dados. Em falhas sistêmicas a inconsistência acidental pode se tornar uma dor de cabeça maior caso não se adote mecanismos de controle de concorrência e idempotência (capacidade de repetir uma ação várias vezes produzindo sempre o mesmo resultado) para evitar o reprocessamento indesejado de eventos.

  • Dificuldade na manutenção do esquema de eventos:

    A evolução do esquema de eventos pode ser complexa, principalmente quando se lida com eventos antigos que precisam ser compatíveis com versões mais recentes do sistema. Quebrar um contrato, principalmente quando não se tem visibilidade dos consumidores desses eventos certamente é algo que queira evitar. Para isso, é importante utilizar técnicas de versionamento de eventos e garantir que o sistema possa lidar com eventos de versões anteriores sem comprometer a funcionalidade.

  • Gerenciamento de eventos duplicados e ordenação:

    Em sistemas distribuídos, é comum enfrentar problemas relacionados a eventos duplicados e há a necessidade de garantir a ordenação correta dos eventos. Para lidar com esses desafios, é essencial implementar mecanismos de deduplicação de eventos, como implementação de estratégia de idempotência, citada anteriormente, e garantir a ordenação por exemplo em ordem cronológica. Adotar hashes baseados algoritmos de baixa colisão SHA256 e/ou UUID v4 ou v5 como identificadores únicos dos eventos também pode ser algo bastante eficiente para evitar duplicidade de eventos.


Estudos de Caso

A seguir, examinaremos três estudos de caso em que Event Sourcing e Event Streaming foram fundamentais para o sucesso do negócio, ilustrando as vantagens dessas abordagens.

  • Case 1: Bankly

O Bankly, uma plataforma de tecnologia financeira e Banking as a Service, tem como objetivo proporcionar soluções modulares e altamente escaláveis para empresas que buscam adentrar no setor financeiro, seja por meio da construção de um banco digital ou Embeed Finance. Um dos pilares estratégicos adotados pela empresa tem sido o uso de Event Driven Architecture (EDA), em que Event Sourcing e Event Streaming são as principais abordagens utilizadas pela Engenharia de Software e tecnologias como RavenDB e DynamoDB, bancos de dados NoSQL altamente escaláveis e SQL Server, banco de dados relacional, que conta com uma funcionalidade conhecida como Temporal Table e o Apache Kafka são peças-chaves para a implementação dessa Arquitetura.

A adoção de Event Sourcing, que permite uma rastreabilidade mais completa das transações e atividades dentro dos sistemas transacionais e cadastrais, garante um registro histórico e imutável de todas as alterações no estado do sistema, aumentando a conformidade e permitindo auditorias mais eficientes.

Para lidar com o desafio da escalabilidade, o Bankly recorreu ao Event Streaming. Esta abordagem possibilita o processamento de grandes volumes de eventos em tempo real, permitindo que os sistemas do Bankly escalonem eficientemente à medida que mais clientes se juntam à plataforma.

Através da implantação estratégica dessas táticas, o Bankly não só conseguiu oferecer soluções financeiras resilientes e facilmente escaláveis, mas também pôde atender auma diversidade de empresas ansiosas por se estabelecerem no setor financeiro. Esta abordagem, longe de ser estática, tem desencadeado um ciclo contínuo de aprimoramentos precisos nos processos operacionais, aumentando a observabilidade dos sistemas e potencializando o desempenho dos produtos. Mais do que isso, tem habilitado a geração de insights valiosos, permitindo que os clientes maximizem suas vantagens e impulsionem significativamente os resultados de seus negócios através de sua plataforma de Webhooks, que processa todos os eventos do Bankly e os envia aos parceiros em tempo real.

Em conclusão, através da eficaz combinação de Event Sourcing e Event Streaming, o Bankly tem solidificado a sua posição como uma plataforma de Banking as a Service confiável e extremamente escalável. Esta abordagem tem permitido à empresa superar desafios frequentes no setor financeiro, demonstrando o imenso valor e potencial destas estratégias para empresas buscando se estabelecer nesta indústria.

  • Case 2: LinkedIn

O LinkedIn, uma das maiores redes sociais profissionais do mundo, enfrentou desafios significativos relacionados à escalabilidade e desempenho à medida que seu número de usuários e quantidade de dados cresceram exponencialmente. Para enfrentar esses desafios, o LinkedIn adotou uma arquitetura baseada em

O impacto real dessa arquitetura no LinkedIn foi a capacidade de escalar e lidar com um imenso volume de eventos em tempo real, tais como atualizações de perfil, conexões e sugestões de emprego. A combinação de Event Sourcing e Event Streaming utilizando o Apache Kafka, desenvolvido internamente para suportar o imenso volume de dados processado e posteriormente se tornando um projeto mantido pela Apache Software Foundation.

A adoção de uma arquitetura orientada a eventos provou ser uma estratégia vital para o LinkedIn, pois propiciou a escalabilidade requerida, o desacoplamento dos componentes e o processamento em tempo real - características que dificilmente seriam alcançadas por meio de arquiteturas mais tradicionais. Esta abordagem tem sido fundamental na evolução contínua da plataforma, demonstrando o potencial e a versatilidade de uma arquitetura orientada a eventos.

  • Case 3: Netflix

Assim como o LinkedIn, a Netflix, líder global em streaming de vídeo, também enfrentou grandes desafios em termos de escalabilidade e capacidade de resposta à medida que seu número de assinantes e catálogo de conteúdo cresceu. Para enfrentar essas questões, a empresa optou por uma arquitetura orientada a eventos, usando principalmente o

A combinação de Event Streaming para lidar com o volume massivo de eventos gerados pelos usuários, como visualizações, pausas e retomadas de vídeos.

A combinação de Event Sourcing e Event Streaming permitiu à Netflix processar e armazenar esses eventos de maneira eficiente, possibilitando a geração de recomendações personalizadas em tempo real e a análise de dados para melhorar continuamente a experiência do usuário. Essa abordagem também ajudou a Netflix a garantir uma alta disponibilidade e resiliência de seus sistemas, mesmo diante de picos de demanda e falhas de infraestrutura.

Nesse caso, o uso dessa arquitetura foi fundamental para a Netflix, pois possibilitou a análise e o processamento de grandes volumes de dados em tempo real e garantiu a escalabilidade e a resiliência necessárias para oferecer uma experiência de usuário de alta qualidade.

Em todos os exemplos, a combinação sinérgica de Event Sourcing e Event Streaming mostrou-se crucial para permitir que essas empresas escalassem e se adaptassem às demandas crescentes de seus negócios, proporcionando uma experiência de usuário consistente e responsiva, o que não teria sido possível utilizando abordagens de arquitetura tradicionais.


Diante disso, surge a questão: por que os executivos deveriam priorizar o Event Sourcing e o Event Streaming?

O entendimento e a implementação dessas estratégias são fundamentais para qualquer executivo que busque desenvolver e expandir produtos digitais escaláveis e de alta performance. A adoção destas abordagens arquiteturais pode gerar benefícios significativos para o negócio, melhorando a eficiência operacional e elevando a satisfação do usuário - dois fatores-chave para o sucesso e crescimento contínuo em um mercado cada vez mais digital e competitivo.

Em resumo, a adoção estratégica desses dois conceitos pode trazer uma série de benefícios tangíveis para os negócios, entre os quais se destacam:

  • Aumento da competitividade: Estas estratégias permitem que as empresas permaneçam ágeis e inovadoras, prontas para responder rapidamente às mudanças de mercado e às demandas dos usuários.
  • Tomada de decisões aprimorada: A junção dessas duas abordagens fornece acesso a dados em tempo real, facilitando a tomada de decisões baseada em informações precisas e atualizadas, o que pode levar a resultados de negócios superiores.
  • Crescimento sustentável: A escalabilidade e resiliência que o Event Sourcing e Event Streaming oferecem garantem que as empresas possam crescer de maneira sustentável, adaptando-se às demandas crescentes sem sacrificar a qualidade do produto ou a experiência do usuário.

Ao compreender o potencial dessas abordagens e aplicá-las efetivamente, os executivos têm a oportunidade de utilizar essas técnicas para impulsionar seus negócios e criar produtos digitais de sucesso. A combinação de escalabilidade, agilidade e insights em tempo real torna esses conceitos essenciais para quem busca criar e manter uma vantagem competitiva no atual ambiente de negócios. Portanto, é vital para os executivos aprofundar o conhecimento nestes temas e explorar como eles podem beneficiar seus negócios e produtos digitais.

 

*Por Tiago Costa, CTPO e cofundador do Bankly e Fernando Seguim, Head de Engenharia do Bankly