Signal, una plataforma de telemetría en tiempo real
Un SDK de frontend tipado y un pipeline de eventos que dieron visibilidad en tiempo real a los embudos KYC globales de Binance, reduciendo el diagnóstico de incidentes de días a minutos.
- Rol
- Senior Frontend Engineer
- Periodo
- 2025–actualidad
- Stack
- TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana
El problema
Millones de personas en más de 100 países pasaban por la verificación de identidad, y algunas abandonaban sin que nadie lo notara. Cuando una integración con un proveedor fallaba, nadie lo veía: leíamos a mano registros de servidor dispersos y un diagnóstico tardaba de uno a tres días. Cada uno de esos días eran usuarios reales que no podían terminar el registro.
El enfoque
- Un SDK pequeño y tipado. Un único rastreador en TypeScript recogía los mismos datos de acciones del usuario en cada pantalla, en web, móvil y Mini Program, para que los eventos significaran lo mismo en todas partes.
- Limitación con válvula de seguridad. El SDK pone los eventos en cola y los envía cada 3 segundos o al llegar a 10, lo que ocurra primero. Una petición por clic agota los hilos de red del navegador; retener los eventos demasiado tiempo arriesga perderlos al cerrar la pestaña. Al salir de la página usa
navigator.sendBeacon. - Un BFF que valida. Los lotes llegan a un Backend for Frontend que comprueba el esquema contra las definiciones de TypeScript, revisa que las marcas de tiempo sean coherentes, elimina campos inesperados y datos personales (PII) y añade los metadatos de la sesión y el veredicto del backend (aprobado, rechazado, pendiente de revisión). Comparar ese veredicto con lo que mostraba la interfaz reveló desajustes de estado entre la interfaz y el backend.
- Kafka, Flink, ClickHouse, Grafana. Kafka absorbe los picos de tráfico mundiales, Flink procesa los eventos en tiempo real, ClickHouse los almacena (el almacenamiento en columnas responde en milisegundos a agregaciones sobre miles de millones de eventos de alta cardinalidad, donde el almacenamiento por filas se arrastra) y Grafana muestra los embudos.
- Manejo silencioso de fallos. Si el pipeline cae, el SDK guarda hasta 100 eventos en
localStoragey un cortocircuito pasivo detiene el envío. No consulta al servidor para comprobar su estado; espera la siguiente respuesta correcta.
El resultado
El tiempo para detectar un incidente bajó de 24–72 horas a menos de 5 minutos. En un embudo donde un paso roto de un proveedor significa miles de registros fallidos, esa es la diferencia entre una nota en el postmortem y una corrección esa misma mañana.