Challenge Pismo.io

Desafio

Criar um processador de eventos disponibilizando dados com baixa latência.

Solução

arquitetura

  • mock_producer: responsável por gerar dados para o desafio.
  • Apache Kafka e Schema Registry: são como uma "pedra angular". Responsáveis por armazenar dados, gerenciar compatibilidade de schemas e fornecer dados de forma escalável e em baixa latência.
  • event_processor: consome dados, valida e separa o respectivo event_type para cada cliente (de acordo com de x para pré configurado).
  • debugger: mostra mensagens no terminal.

Versões futuras

  • expor dados através de Rest Proxy ou REST API proprietária.
  • criar webhooks caso HAJA necessidade.
  • migrar event_processor.py para outra tecnologia mais escalável caso vire um gargalo. Apache Flink, Siddhi ou solução proprietária.

Pré requisitos

Como usar

Após o preenchimento do arquivo configurations.yaml, na raiz do projeto, executar os comandos abaixo na raiz do projeto.

Provisionamento do broker Kafka.

make kafka-up 

Iniciando execução do produtor de dados (mock).

make mock-start

Iniciando execução do processador de eventos, que consome, valida e produz dados para N clientes.

make event-process-start

Inicio do debugger para visualizar mensagens produzidas pelo event_processor.

make debugger-start

Como testar

Subir broker Kafka.

make kafka-up 

Rodar tests.

make tests