Langkau ke kandungan
Clinford Jordano Valencia
Semua projek
PlatformWebMudah alih

Signal, Platform Telemetri Masa Nyata

SDK frontend bertaip dan saluran peristiwa yang memberi corong KYC global Binance keterlihatan masa nyata, memendekkan diagnosis insiden daripada beberapa hari kepada beberapa minit.

Peranan
Senior Frontend Engineer
Tempoh
2025–kini
Stack
TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana

Masalahnya

Berjuta-juta orang di lebih 100 negara melalui pengesahan identiti, dan sebahagian daripada mereka berhenti separuh jalan tanpa disedari. Apabila integrasi vendor rosak, tiada siapa yang nampak: kami membaca log pelayan yang berselerak secara manual, dan satu diagnosis mengambil masa satu hingga tiga hari. Setiap hari itu ialah pengguna sebenar yang gagal menamatkan onboarding.

Pendekatannya

  • SDK yang kecil dan bertaip. Satu penjejak TypeScript mengumpul data tindakan pengguna yang sama pada setiap skrin, merentas web, mudah alih dan Mini Program, supaya peristiwa membawa maksud yang sama di mana-mana.
  • Pendikitan dengan injap keselamatan. SDK mengumpul peristiwa dalam baris gilir dan menghantarnya setiap 3 saat atau pada 10 peristiwa, yang mana lebih awal. Satu permintaan bagi setiap klik menghabiskan thread rangkaian pelayar; menahan peristiwa terlalu lama pula berisiko kehilangannya apabila tab ditutup. Semasa halaman ditutup, SDK menggunakan navigator.sendBeacon.
  • BFF yang mengesahkan. Kelompok peristiwa masuk ke Backend for Frontend yang menyemak skema terhadap definisi TypeScript, memeriksa kewajaran cap masa, membuang medan yang tidak dijangka dan PII, lalu melampirkan metadata sesi serta keputusan backend (lulus, ditolak, menunggu semakan). Membandingkan keputusan itu dengan apa yang dipaparkan UI mendedahkan ketidakpadanan keadaan antara UI dan backend.
  • Kafka, Flink, ClickHouse, Grafana. Kafka menyerap lonjakan trafik global, Flink memproses peristiwa secara masa nyata, ClickHouse menyimpannya (storan berlajur menjawab agregasi atas berbilion peristiwa berkardinaliti tinggi dalam milisaat, sedangkan storan baris merangkak) dan Grafana memaparkan corongnya.
  • Pengendalian kegagalan yang senyap. Jika saluran itu terhenti, SDK menyimpan sehingga 100 peristiwa dalam localStorage dan pemutus litar pasif menghentikan penghantaran. Ia tidak memanggil pelayan untuk menyemak kesihatan; ia menunggu respons berjaya yang seterusnya.

Hasilnya

Masa untuk mengesan insiden turun daripada 24–72 jam kepada kurang 5 minit. Bagi corong di mana satu langkah vendor yang rosak bermakna beribu-ribu onboarding gagal, itulah bezanya antara satu catatan dalam postmortem dan pembaikan pada pagi yang sama.