Workshop: Criando Aplicações Baseadas em Event Sourcing e CQRS usando Apache Kafka e ksqlDB

Sala: Workshop 1

Horário: 9:00am - 6:05pm

Dia da semana: Segunda-feira

Nível: Intermediate

Workshop em Português

Pontos principais

  • Aprenda como modelar sistemas usando microservices e técnicas de Domain-Driven Design.
  • Saiba como implementar os padrões Event Sourcing e CQRS de forma correta.
  • Utilize o Apache Kafka como fundação para uma arquitetura dirigida por eventos.
  • Utilize o ksqlDB como mecanismo de captação de dados usando técnicas de CDC.
  • Utilize do ksqlDB como mecanismo de filtro, agregação, e composição de eventos.

Pré-requisitos

  • Conhecimento de modelagem de sistemas usando programação orientada a objetos ou técnicas similares.
  • Conhecimento básico de programação em linguagens como Java ou Go.
  • Conhecimentos básicos de Linux, Docker, Bash, e programação em Shell.
  • Familiaridade com sistemas de mensageria, tais como ActiveMQ, RabbitMQ.
  • Seu notebook deverá ter uma configuração mínima de 4 cores, 12GB de RAM e 80GB disponível em disco.
  • Seu notebook deverá conter o Software VirtualBox instalado e devidamente configurado.

Profissionais do desenvolvimento que estejam criando microservices comumente se deparam com o desafio de implementar a comunicação de dois ou mais serviços sem sacrificar o modelo de isolamento que estes proporcionam, que é, sem dúvida, o principal motivador do uso deste tipo de estilo arquitetural pois ele gera um menor acoplamento e possibilita a evolução e escala independente de cada microservice.

Devido  a própria natureza dos microservices, onde cada um escreve em sua própria base de dados, é necessário que os dados gerados por cada serviço sejam propagados para outros microservices que estejam interessados naquele dados, notadamente quando há uma relação entre ambos devido a modelagem do sistema. 

Uma das abordagens para endereçar esse desafio é garantir que cada microservice possa gravar seus dados em suas próprias bases de dados, bem como publicar esse mesmo dado para outros serviços através de um sistema de mensageria. No entanto, para que isso funcione bem é necessário que esta operação seja atômica. Em plataformas como Jakarta EE ou .NET, isso pode ser feito através do uso de 2PC, mas isso cria um acoplamento com a tecnologia e, portanto, não é uma solução ideal para este paradigma arquitetural.

Uma solução eficaz para lidar com esse tipo de desafio é a implementação do padrão Event Sourcing, que possibilita a persistência de dados bem como sua propagação para outras bases de dados de forma atômica, sem necessariamente adotar tecnologias específicas para endereçar a questão de atomicidade. Esta técnica consiste em tratar cada operação realizada por em uma entidade de negócio como um evento imutável, e esta série de eventos é então persistida num sistema de log que possibilite a reconstrução do estado da entidade de negócio a partir do log de eventos.

Este workshop ensinará como implementar corretamente o padrão Event Sourcing usando o Apache Kafka. Será mostrado como o Kafka oferece os recursos básicos para garantir questões relacionadas a consistência dos eventos, escalabilidade, tolerância a falhas, e também aspectos de segurança. Será também mostrado como implementar de forma apropriada a tecnologia ksqlDB, que possibilita a leitura de dados de bases de dados a partir de uma arquitetura baseada em conectores, bem como o processamento destes dados usando uma linguagem próxima ao SQL. O ksqlDB possui um papel chave neste tipo de arquitetura em possibilitar a reconstrução dos eventos em um estado que possa ser facilmente lido e replicado para todos os microservices interessados naquele estado; além de possibilitar a implementação simples de visualizações de dados oriundos de múltiplos microservices, usando a técnica de CQRS.

Speaker: Ricardo Ferreira

Ricardo is Principal Developer Advocate at Elastic

Ricardo is Principal Developer Advocate at Elastic — the company behind the Elastic Stack (ElasticSearch, Logstash, Kibana, Beats) and Elastic Cloud, where he does community advocacy for North America. With over 20 years of experience he specializes in streaming data, analytics, nosql, big data, and cloud. Prior to Elastic he worked for other vendors such as Confluent, Oracle, and Red Hat, as well as several consulting firms.

While not working he loves barbecuing on his backyard with his family and friends, where he gets the chance to talk about anything that is not IT related. He lives in North Carolina, USA with his wife and son.

Find Ricardo Ferreira at

Other Workshops:

Tracks 2019