Membangun Pipeline Analitik Fraud Real-Time
Panduan arsitektur: menyerap 50K event/detik, memperkaya dengan smart signals, dan menilai risiko dalam waktu kurang dari 10ms menggunakan streaming engine kami.
Memproses 50.000 event fingerprint per detik, memperkaya masing-masing dengan smart signals, dan mengembalikan skor risiko dalam waktu kurang dari 10 milidetik membutuhkan arsitektur streaming yang dirancang dengan cermat. Artikel ini menelusuri pipeline kami dari ingestion hingga keputusan.
Lapisan Ingestion
Event tiba sebagai permintaan HTTPS POST dari agen JavaScript kami yang berjalan di browser pengunjung. Setiap event berisi payload sinyal terenkripsi — biasanya 8-12KB data terkompresi yang mencakup 130+ sinyal browser. Edge server kami menerminasi TLS, memvalidasi tanda tangan permintaan, dan meneruskan payload ke pipeline pemrosesan.
Kami menggunakan deployment multi-region di mana edge server ditempatkan bersama (colocated) node CDN pelanggan kami. Hal ini menjaga round-trip jaringan tetap di bawah 20ms untuk 95% permintaan secara global. Edge server adalah layanan Go yang stateless dan berjalan di belakang load balancer, menskalakan secara horizontal berdasarkan volume permintaan.
Ekstraksi Sinyal
Tahap pemrosesan pertama mendekripsi dan mengurai payload sinyal. Setiap sinyal diekstraksi, divalidasi, dan diberi tipe. Hash Canvas diverifikasi terhadap nilai-nilai yang diketahui mustahil (yang mengindikasikan pemblokiran atau spoofing canvas). Parameter WebGL divalidasi silang untuk konsistensi. Properti Navigator diperiksa terhadap kombinasi valid yang diketahui.
Tahap ini juga melakukan normalisasi sinyal. String user agent diurai menjadi komponen terstruktur (browser, versi, OS, perangkat). Dimensi layar dinormalisasi untuk memperhitungkan penskalaan DPI. Offset zona waktu divalidasi terhadap data geolokasi IP.
Enrichment Smart Signals
Sinyal yang diekstraksi kemudian diperkaya dengan analisis Smart Signals — lapisan intelijen sisi server kami. Ini mencakup deteksi incognito (membandingkan pola sinyal terhadap tanda tangan private browsing yang diketahui), deteksi VPN (mereferensikan silang data IP dengan sinyal zona waktu dan locale), deteksi tampering browser (mengidentifikasi inkonsistensi yang mengindikasikan spoofing sinyal), dan deteksi virtual machine (mengenali profil perangkat keras yang terkait dengan VMware, VirtualBox, dan VM cloud).
Setiap smart signal dihitung secara independen dan menghasilkan baik hasil boolean maupun skor kepercayaan (confidence score). Tahap enrichment menambahkan 24 sinyal tambahan ke setiap event, memberikan penilaian ancaman yang komprehensif yang melampaui apa yang bisa dicapai oleh pengumpulan sisi klien saja.
Mesin Penilaian Risiko
Event yang telah diperkaya diteruskan ke mesin penilaian risiko kami — sebuah model gradient-boosted decision tree yang dilatih pada jutaan event berlabel. Model ini mempertimbangkan seluruh 130+ sinyal mentah, 24 smart signal, dan beberapa fitur turunan: metrik velositas (berapa banyak event dari perangkat ini dalam 5 menit, 1 jam, dan 24 jam terakhir), pola perilaku historis, dan skor reputasi jaringan.
Model menghasilkan skor risiko antara 0 dan 100, beserta faktor kontributor utamanya. Skor 85, misalnya, mungkin disertai faktor seperti «VPN terdeteksi», «mode incognito», dan «velositas tinggi — 47 event dalam 5 menit». Kemampuan menjelaskan (explainability) ini sangat penting bagi analis fraud yang perlu memahami mengapa suatu event tertentu ditandai.
Lapisan Penyimpanan dan Kueri
Semua event dipersistensikan ke ClickHouse — basis data kolumnar yang dioptimalkan untuk kueri analitis atas dataset besar. ClickHouse menangani volume tulis kami (50K event/detik) tanpa kesulitan, dan penyimpanan kolumnarnya memungkinkan kueri analitis di bawah satu detik atas miliaran baris.
Kami menggunakan strategi retensi multi-tier. Data hot (7 hari terakhir) disimpan di NVMe SSD untuk respons kueri di bawah 100ms. Data warm (7-90 hari) berada di SSD standar. Data cold (90+ hari) dikompresi dan dipindahkan ke object storage, dapat dikueri tetapi dengan latensi lebih tinggi.
Kafka sebagai Tulang Punggung
Apache Kafka menyatukan pipeline. Setiap tahap membaca dari dan menulis ke topik Kafka. Lapisan ingestion menulis event mentah. Tahap ekstraksi sinyal membaca event mentah dan menulis event yang diekstraksi. Tahap enrichment Smart Signals membaca event yang diekstraksi dan menulis event yang diperkaya. Mesin penilaian risiko membaca event yang diperkaya dan menulis event yang telah dinilai.
Arsitektur ini memberikan beberapa keunggulan: tahap-tahap dapat diskalakan secara independen, kegagalan pada satu tahap tidak memengaruhi yang lain, dan kami dapat memutar ulang (replay) event melalui tahap mana pun untuk debugging atau pemrosesan ulang. Consumer group Kafka memungkinkan pemrosesan paralel dalam setiap tahap, dan exactly-once semantics-nya memastikan tidak ada event yang diproses dua kali atau hilang.
Anggaran Latensi
Target latensi end-to-end kami adalah 10ms sejak saat payload sinyal yang diperkaya tiba di pipeline pemrosesan hingga saat skor risiko dikembalikan. Berikut rincian anggarannya: ekstraksi sinyal memakan waktu 1-2ms, enrichment Smart Signals 3-4ms, penilaian risiko 2-3ms, serta serialisasi dan respons 1-2ms. Lompatan Kafka antar tahap menambahkan kurang dari 1ms dalam deployment colocated kami.
Memenuhi anggaran ini secara konsisten pada 50K event/detik membutuhkan optimasi yang cermat di setiap tahap. Kami menggunakan memory pool yang telah dialokasikan sebelumnya, serialisasi zero-copy, dan penulisan ClickHouse secara batch. Model penilaian risiko dikompilasi ke kode native menggunakan ONNX Runtime, menghilangkan overhead interpreter Python.
Mark menghabiskan dua minggu melakukan profiling pada pipeline sebelum menemukan bottleneck di lapisan lookup terdistribusi kami — sebuah mutex tunggal sedang menyerialkan lookup di seluruh goroutine. Setelah beralih ke desain sharded lock, p99 turun dari 48ms menjadi 9ms. Terkadang solusinya sangat sederhana hingga memalukan begitu Anda menemukannya.