Stakes: a working fraud model that sits behind a slow pipeline is invisible in the window that attackers exploit. Models alone don’t save dollars — deployable, auditable, low-latency pipelines do. If your pipeline can't score within the audit window, you miss attacks and fail regulators.
Architecture principles (what actually matters)
- End-to-end SLOs first: aim for 95th-percentile scoring latency <200ms and 99th <500ms for high-volume flows; feature freshness SLO <1s for streaming features, <5m for batch-only features. These are engineering targets tied to operational risk.
- Throughput & spikes: design for 2–3× peak RPS with graceful degradation. Example: if peak is 5k RPS, plan baseline capacity for 10–15k RPS and burst handling to 25k using partitioning and autoscaling.
- Auditability: every decision must carry metric lineage — raw event id, CDC offset, feature version, model version, rule traces. Keep immutable logs for 90–365 days depending on compliance.
- Measurables map to money: a single missed detection costing $10,000 and 40 missed events/month equals $400K/month; your SLA must reduce missed detections by an amount that justifies engineering cost.
Each section below gives concrete tech choices, thresholds, and tests.
Ingestion and stream processing: Kafka+Flink vs Pulsar vs Kinesis
Choose the bus that matches operational model and SLAs. Quick comparison:
| Dimension | Kafka + Flink | Pulsar | Kinesis (AWS) |
|---|---|---|---|
| Typical latency | sub-100ms (with tuned batching) | sub-100ms | 100–500ms (depends on shard) |
| Exactly-once stateful processing | Flink state + checkpoints (yes) | Pulsar functions + Flink support (good) | At-least-once, harder exactly-once for stateful ops |
| Ops complexity | medium-high (self-hosted) | medium (growing ecosystem) | low (managed) |
| Best when | high throughput, complex stateful joins | multi-tenancy, geo-replication | AWS shop, quick start |
Operational rules:
- Use Debezium for CDC into Kafka/Pulsar; keep CDC latency <500ms.
- Partition by natural key (card_id, account_id) to keep state local; aim for replication.factor=3.
- Use Flink for stateful joins and windowed aggregations; enable checkpoints with RPO <30s and RTO <2min.
Architecture snippet:
[DB CDC] -> Debezium -> Kafka Topic (events) -> Flink (feature extraction + enrichment)
-> Online feature store (Redis/KeyDB or vector store) -> Model scoring (Seldon/SageMaker)
-> Decision service -> Event sink (audit log + Snowflake for backfill)
Design for producer and consumer parallelism; test with 2–3× expected load and measure 99th-percentile tail latency.
Feature store & low-latency lookups
Requirements: online store read latency <5ms (P95), feature freshness SLO <1s for streaming features, strong versioning and schema lineage.
Pattern choices:
- Use Feast or Tecton for feature contracts and lineage. Online store options:
- Redis / KeyDB: best for scalar features and counters; P95 read <2ms when deployed in-memory with sharding.
- Milvus / Pinecone: use when you need vector similarity lookups (fraud patterns, behavioral embeddings); expect P95 reads 5–20ms depending on topology.
- Hybrid approach: store recent streaming features in Redis for immediate scoring and persist aggregates to Snowflake for batch backfills and audits.
- Freshness guarantees: tag each feature with event_time and ingestion_offset. Enforce SLO checks: queue alerts if delta(event_time, now) > 2×SLO.
Cold-starts and backfills:
- Use Snowflake (or Databricks) for materialized backfills. When backfilling, write computed features into online store with version tags; avoid overwriting live features without a migration window.
Model serving patterns & lifecycle management
Two viable serving modes:
- External model server + online features (recommended for ops isolation).
- In-stream scoring inside Flink (low-latency but harder to iterate).
Recommended stack: Databricks + MLflow for training and model registry; Seldon Core / SageMaker / Vertex AI for production serving; Prometheus for infra metrics; Arize or Evidently for drift and explainability.
Operational rules and thresholds:
- Warm model containers to avoid cold-start latency; keep <50ms cold-start budget for high-throughput paths.
- Canary and shadowing: start with 0.5–1% traffic shadowed for 24h, then ramp to 5% over 48–72h before full rollout.
- Monitoring: alert on model latency >200ms (P95), model prediction distribution shift >10% KLD over 1h window, and feature-store read errors >0.1%.
- CI checks: require unit tests for metric parity (seeded-parity) and fairness/regulatory tests before registry promotion.
Rules + ML orchestration (reduce false positives without doubling teams)
Fault in many deployments: put ML and rules in independent tracks without a coherent orchestration, which inflates FPs.
Practical recipe:
- Pre-filter rules: implement high-precision, low-cost rules that block obvious fraud before scoring (e.g., known bad BINs, blacklisted IDs). Target: catch ~30–60% of obvious fraud with <0.5% FP.
- ML scoring: run only on remainder. Tune score threshold for target precision/recall tradeoff relevant to cost-per-review.
- Post-score rules: combine score + business heuristics for action (auto-block, hold for review, require 2FA).
Example decision table:
- Score > 0.95 AND pre-filter hit -> auto-block
- 0.6 < Score <= 0.95 -> hold for manual review (CVR target to keep human cost within budget)
- Score <= 0.6 AND no pre-filter -> allow
Always log full rule traces and model features for auditors.
Reliability, testing, and SLA that maps to $/month risk
Template SLA components (map these to expected prevented loss):
- Uptime: 99.95% (monthly downtime <21.6 minutes)
- Scoring latency: P95 <200ms, P99 <500ms
- Feature freshness: streaming features <1s 95% of time
- Detection lift: increase true positive detection by X% (tie to dollar savings)
- False positive rate: maintain below Y% to control manual review costs
Example money-mapping: if baseline loss is $500K/month and your system reduces missed detection by 80%, prevented loss = 0.8 * $500K = $400K/month. Use this math to justify SRE and infra costs. Niche.dev has delivered fraud systems that recovered $400K/month by catching what rules-based systems missed — that was a Fraud Detection & Compliance engagement with clear metric-lineage and continuous audits.
Operational test plan:
- Load test to 3× peak for 72 hours.
- Canary: 0.5% -> 1% -> 5% -> 25% -> 100% over 72–168 hours with automated rollback on key metric breaches.
- Chaos tests for failover: simulate offline zone, ensure RTO <2 minutes and RPO <30s.
Conclusion & CTA
Strong opinion: if you can't draw a straight line from detection SLO to dollars saved, stop building models and fix pipelines. Invest in CDC, an online feature store, low-latency serving, and metric-lineage before adding model complexity.
Need help with real-time fraud detection? Book a free strategy call with Niche.dev.
Suggested Internal Links
- How to Audit Your Data Before Starting an AI Project — synthetic://cmouha5dg0000mh0fg9jxfbt2/indexed-content/niche-dev/data-audit-ai.md
- The Role of MLOps in Scalable AI Systems — synthetic://cmouha5dg0000mh0fg9jxfbt2/indexed-content/niche-dev/mlops-enterprise.md
- AI Automation vs RPA: What’s the Difference? — synthetic://cmouha5dg0000mh0fg9jxfbt2/indexed-content/niche-dev/ai-vs-rpa.md