Skip to content

Instantly share code, notes, and snippets.

@gbzarelli
Last active October 27, 2024 20:58
Show Gist options
  • Save gbzarelli/45e401c9474b5bb1c65f47ebe67cd26b to your computer and use it in GitHub Desktop.
Save gbzarelli/45e401c9474b5bb1c65f47ebe67cd26b to your computer and use it in GitHub Desktop.
Arquitetura - Distribuição de eventos com Kafka e Webhook #helpdev-blog

Distribuição de eventos com Kafka e Webhook

(o projeto: https://github.com/gbzarelli/events-distribution-platform)

O projeto events-distribution-platform tem como intuito validar uma arquitetura que seja capaz de distribuir eventos utilizando o Kafka como plataforma de Streamming e notificar clientes via Webhooks.

Os webhooks serão cadastrados em uma base NoSQL baseado em filtros de tipo de eventos, assim cada usuário (associado a uma organização) poderia ter diferentes tipos de filtros para notificar diferentes endereços.

Arquitetura

Tecnologias

  • Quarkus - Framework para construção das aplicações
  • MongoDB - Armazenamento de regras para os filtros do Webhook
  • K6 - Ferramenta de testes para realizar a chamada na api de carga de eventos.
  • Kafka - Plataforma de Streamming para distribuição de eventos.
  • RabbitMQ - Sistema de mensageria para entrega dos eventos na arquitetura do Webhook
  • Prometheus - Coletor de métricas das aplicações
  • Grafana - Visualizador das métriocas em forma de dashboards

Execução

O arquivo docker-compose.yml conta com uma infra toda configurada e customizada com filtro de eventos com o kafka-stream um consumidor para o tópico filtrado e um para o tópico geral. Para a arquitetura de Webhook, ao subir a infra do MongoDB já é inicializado pré filtros para realizar a chamada de callback nos três rest-clients configurados.

Foi criado um arquivo Makefile para auxiliar no processo de execução de todo ambiente.

Executando o build

>$ make build

Construindo imagens docker

>$ make install

Subindo a stack

>$ make run

Executando carga de eventos:

>$ make send_events

Monitoramento

Temos como monitoramento o Grafana em conjunto com o Prometheus escutando as métricas das aplicações, foi criado uma dashbord default que sobe automaticamente no Grafana ao executar o make run (stack do docker-compose).

Endereços expostos para monitoramento:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment