Saniyede 12K İşlemi Tarayan Gerçek Zamanlı Dolandırıcılık Sistemi Nasıl Kurduk
VaultChain'in teknik hikayesi: Go ile event-driven mimari, PostgreSQL partitioning, ML model servisi ve ölçekte <50ms gecikmeyi nasıl tuttuk.
Bir fintech musterisi dolandiricilik tespit sistemi istediginde gereksinim netti: her islem onaylanmadan once puanlanmali. Yosgunta saatte saniyede 12.000 islem ile bu, sifir kayip ile uctan uca 50ms'nin altinda gecikme demek. Iste nasil kurduk.
Mimari uc katmandan olusuyor. Veri alma katmani islem olaylarini AWS ALB arkasindaki bir Go servisi uzerinden aliyor. Go'yu Node.js yerine sectik cunku goroutine'ler bu olcekte I/O-bound is icin 10 kat daha iyi eszamanlilik sagladi. Her olay hemen merchant ID'ye gore bolumlanmis bir Kafka topic'ine yaziliyor -- merchant basina siralama garantisi verirken merchantlar arasi paralel isleme izin veriyor.
Puanlama katmani iki asamali bir pipeline calistiriyor. Birinci asama deterministik kurallar uyguluyor: hiz kontrolleri (ayni kart 60 saniyede 5 kez kullanildi), cografi imkansizlik (Istanbul'da islem, 10 dakika sonra Londra'da), ve tutar anomalileri. Bu kurallar tek baslarina dolandiriciligin %40'ini neredeyse sifir gecikmeyle yakaliyor cunku sadece Redis cluster'a karsi bellekte arama gerektiriyor.
Ikinci asama ML modelini calistiriyor. LightGBM modelini Python Flask wrapper degil, ozel bir Go servisi uzerinden sunuyoruz. Model 18 aylik etiketlenmis islem verisi uzerinde egitildi (2.3M ornek, %0.8 dolandiricilik orani). Ozellik muhendisligi zor kisimdi: islem basina 47 ozellik hesapliyoruz -- hareketli ortalamalar, gun ici zaman kaliplari, merchant kategori risk skorlari ve cihaz parmak izi benzerligi dahil. Model cikarimi islem basina 8-12ms suruyor.
PostgreSQL kalicilik katmanini yonetiyor, ama cogu kisinin kullandigi sekilde degil. Islemler tablosunu tarihe gore (aylik) bolumluyor, risk skoru araligina gore alt bolumleme yapiyoruz. Bu sicak sorgulari hizli tutuyor: son yuksek riskli islemleri arastirmak terabyte'lari taramak yerine kucuk bir bolume vuruyor. Ayrica zaman damgasi sutunlarinda BRIN indeksleri kullaniyoruz -- zaman serisi verileri icin B-tree indekslerinden 100 kat daha kucukler.
Anahtar muhendislik karari sistemi guclu tutarlilik yerine nihai tutarlilik olarak tasarlamakti. Islem gercek zamanli skora gore 50ms icinde onaylaniyor veya isaretleniyor. Ama tam denetim izi, merchant risk profili guncellemesi ve uyum raporu uretimi Kafka tuketicileri uzerinden asenkron olarak gerceklesiyor. Gecikme hedefini ulastirilabilir kilan bu ayirma.
3 ay sonrasi sonuclar: 2.1M dolar onlenen dolandiricilik, %99.97 erisim suresi, p95 gecikme 38ms ve musterinin onceki kural tabanli sistemine kiyasla sifir yanlis pozitif orani artisi. ML modeli statik kurallarin kacirdigi dolandiricilik kaliplarini yakaliyor -- buyuk bir ucret oncesi gunlerce kucuk islemlerle kart gecerliligini test eden yavas damlama kart testleri gibi.
Ders: olcekte gercek zamanli sistemler en hizli dili veya veritabanini secmekle ilgili degil. Dogru veri akisini tasarlamak, sicak yolu soguk yoldan ayirmak ve tutarlilik ile gecikme arasinda bilingli takas yapmakla ilgili. Sicak yoldaki her milisaniye tahmin degil, profilleme ve olcum yoluyla kazanildi.
Projeniz için konuşalım
15 dakika, taahhut yok.