PlatformWebMobil
Signal, gerçek zamanlı telemetri platformu
Tip güvenli bir frontend SDK’sı ve olay hattı, Binance’in küresel KYC hunilerine gerçek zamanlı görünürlük kazandırdı ve olay teşhisini günlerden dakikalara indirdi.
- Rol
- Senior Frontend Engineer
- Dönem
- 2025–günümüz
- Teknolojiler
- TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana
Sorun
100’den fazla ülkede milyonlarca kişi kimlik doğrulamasından geçiyordu ve bir kısmı fark edilmeden yarıda bırakıyordu. Bir tedarikçi entegrasyonu bozulduğunda bunu kimse görmüyordu: dağınık sunucu loglarını elle okuyorduk ve tek bir teşhis bir ila üç gün sürüyordu. Bu günlerin her biri, kaydını tamamlayamayan gerçek kullanıcılar demekti.
Yaklaşım
- Küçük, tip güvenli bir SDK. Tek bir TypeScript izleyicisi web, mobil ve Mini Program’daki her ekranda aynı kullanıcı eylemi verisini topladı; böylece olaylar her yerde aynı anlama geldi.
- Emniyet supaplı kısıtlama. SDK olayları kuyruğa alır ve hangisi önce gelirse her 3 saniyede bir ya da 10 olay biriktiğinde gönderir. Her tıklamaya bir istek göndermek tarayıcının ağ iş parçacıklarını tüketir; olayları çok uzun tutmak ise sekme kapanınca kaybolma riski taşır. Sayfadan çıkılırken
navigator.sendBeaconkullanılır. - Doğrulama yapan bir BFF. Gruplar bir Backend for Frontend’e gelir; bu katman şemayı TypeScript tanımlarına göre denetler, zaman damgalarının makul olup olmadığına bakar, beklenmeyen alanları ve kişisel verileri (PII) temizler, oturum bilgileriyle birlikte backend’in kararını (geçti, reddedildi, inceleme bekliyor) ekler. Bu kararı arayüzün gösterdiğiyle karşılaştırmak, arayüz ile backend arasındaki durum uyuşmazlıklarını ortaya çıkardı.
- Kafka, Flink, ClickHouse, Grafana. Kafka küresel trafik sıçramalarını karşılar, Flink olayları gerçek zamanlı işler, ClickHouse saklar (sütun tabanlı depolama milyarlarca yüksek kardinaliteli olay üzerindeki toplamalara milisaniyeler içinde yanıt verir, satır tabanlı depolama ise sürünür) ve Grafana hunileri gösterir.
- Sessiz hata yönetimi. Hat çalışmıyorsa SDK
localStorageiçinde en fazla 100 olay tutar ve pasif bir devre kesici gönderimi duraklatır. Sağlık durumunu öğrenmek için sunucuya istek atmaz; bir sonraki başarılı yanıtı bekler.
Sonuç
Bir olayı tespit etme süresi 24–72 saatten 5 dakikanın altına indi. Tek bir tedarikçi adımının bozulmasının binlerce başarısız kayıt anlamına geldiği bir hunide bu, postmortem’deki bir satırla aynı sabah yapılan düzeltme arasındaki farktır.