Signal, uma plataforma de telemetria em tempo real
Um SDK de frontend tipado e um pipeline de eventos que deram aos funis de KYC globais da Binance visibilidade em tempo real, reduzindo o diagnóstico de incidentes de dias para minutos.
- Papel
- Senior Frontend Engineer
- Período
- 2025–atual
- Stack
- TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana
O problema
Milhões de pessoas em mais de 100 países passavam pela verificação de identidade, e algumas desistiam sem que ninguém percebesse. Quando uma integração com um fornecedor quebrava, ninguém via: líamos à mão logs de servidor espalhados, e um diagnóstico levava de um a três dias. Cada um desses dias eram usuários reais que não conseguiam concluir o cadastro.
A abordagem
- Um SDK pequeno e tipado. Um único rastreador em TypeScript coletava os mesmos dados de ações do usuário em todas as telas, na web, no celular e no Mini Program, para que os eventos tivessem o mesmo significado em todo lugar.
- Limitação com válvula de segurança. O SDK coloca os eventos numa fila e os envia a cada 3 segundos ou ao chegar a 10, o que vier primeiro. Uma requisição por clique esgota as threads de rede do navegador; segurar os eventos por tempo demais arrisca perdê-los quando a aba fecha. Ao sair da página, usa
navigator.sendBeacon. - Um BFF que valida. Os lotes chegam a um Backend for Frontend que confere o schema com as definições em TypeScript, verifica a coerência dos timestamps, remove campos inesperados e dados pessoais (PII) e acrescenta os metadados da sessão e o veredito do backend (aprovado, rejeitado, aguardando revisão). Comparar esse veredito com o que a interface mostrava revelou divergências de estado entre a interface e o backend.
- Kafka, Flink, ClickHouse, Grafana. O Kafka absorve os picos de tráfego globais, o Flink processa os eventos em tempo real, o ClickHouse os armazena (o armazenamento colunar responde em milissegundos a agregações sobre bilhões de eventos de alta cardinalidade, onde o armazenamento por linhas se arrasta) e o Grafana mostra os funis.
- Tratamento silencioso de falhas. Se o pipeline cair, o SDK guarda até 100 eventos no
localStoragee um circuit breaker passivo pausa o envio. Ele não consulta o servidor para checar a saúde; espera a próxima resposta bem-sucedida.
O resultado
O tempo para detectar um incidente caiu de 24–72 horas para menos de 5 minutos. Num funil em que uma etapa quebrada de fornecedor significa milhares de cadastros perdidos, essa é a diferença entre uma nota no postmortem e uma correção na mesma manhã.