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.
- 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
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
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:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000