Pular para o conteúdo
Voltar aos projetos
Sistemas & Arquitetura
Em desenvolvimento

VMageste — Marketing Analytics SaaS de Alta Volumetria

~3 milhões de eventos por dia, multi-tenant

Métricas-chave

~3 mi de eventos/dia
SaaS multi-tenant
Kafka + ClickHouse
Liderança de time
VMageste — Marketing Analytics SaaS de Alta Volumetria — ~3 milhões de eventos por dia, multi-tenant

Contexto

Agências e times de performance vivem alternando entre os painéis de Meta, Google e TikTok, e reconciliando números que nunca batem. A plataforma junta essas fontes em um lugar só.

O desafio

Ingerir ~3 milhões de eventos diários das APIs do Meta, Google e TikTok em uma plataforma multi-tenant, mantendo a latência do banco OLTP sob controle e os dashboards em tempo real responsivos, sem gargalos.

A arquitetura

Liderei a migração do monolito Node.js para uma arquitetura de microserviços orientada a eventos. O Kafka desacopla ingestão de processamento; consumidores em Golang tratam os streams em escala; o ClickHouse absorve as queries analíticas para que o PostgreSQL cuide apenas do transacional. Padrão Strangler Fig para migrar sem downtime.

Fluxo da arquitetura

  1. Fontes de tráfego

    • Meta
    • Google
    • TikTok
  2. Ingestão

    • Apache Kafka
    • Desacopla ingestão de processamento
  3. Processamento

    • Consumidores em Golang
    • Enriquecimento e deduplicação de leads
  4. Armazenamento

    • ClickHouse — consultas analíticas
    • PostgreSQL — transacional
  5. Produto

    • Dashboards em tempo real
    • Alertas e relatórios

Decisões de engenharia

Migração sem parar o produto

O padrão Strangler Fig permitiu substituir o monolito por partes, mantendo o sistema antigo no ar enquanto cada fatia migrava — em vez de uma reescrita de uma vez só, que é onde esse tipo de projeto costuma morrer.

Separar escrita de leitura analítica

Ingestão assíncrona sobre Kafka e consulta analítica em banco colunar. As duas cargas deixaram de competir pelo mesmo recurso, que era a causa real da lentidão.

Lead limpo na entrada

Enriquecimento e deduplicação acontecem no fluxo de ingestão, não em relatório. O time comercial recebe uma base já tratada, em vez de descobrir o duplicado na hora de ligar.

Stack completa

Golang
Apache Kafka
ClickHouse
NestJS
PostgreSQL
Redis
Docker
DDD
Artigo completoDe monólito a Kafka + ClickHouse: como redesenhei um analytics com milhões de eventos por dia8 min de leituraLer o artigo