Hardening a ~3-billion-events/month client-side threat-detection pipeline on AWS
Strip away the domain and Feroot’s product is a streaming analytics platform: up to ~3 billion browser events a month ingested through Amazon Kinesis Data Streams, transformed by ~15–20 Lambda consumers, aggregated in Amazon OpenSearch Service for customer queries, and archived to an Amazon S3 replay lake. VeUP’s engagement modernized that analytics estate end to end — de-skewed distribution, edge-throttled ingestion, and lifecycle-governed indices — against explicit freshness and cost criteria.
The challenge
The analytics contract is demanding: security customers expect events to appear in their dashboards within a minute or two, aggregated hourly, forever queryable — while ingest volume swings by an order of magnitude as individual customer projects spike to half a billion events a month. Under review, the platform showed the standard pathologies of a grown-not-designed streaming estate: partition skew concentrating load, aggregate updates amplifying write costs, ungoverned index aging, and unit economics that scaled linearly with volume when the business needed them sub-linear.
The solution
VeUP mapped the full analytics topology — API edge, dual Kinesis streams (raw and enriched), the consumer fan-out, the OpenSearch aggregate tier, and the Firehose → S3 archive — and delivered a modernization plan where every driver has a named fix. Partition de-skew makes stream throughput additive across shards; entitlement and throttling move to the edge so the analytics tiers only process billable events; the aggregate layer moves to append-only writes with materialized hourly rollups; and index lifecycle management ages data down storage tiers with the S3 lake guaranteeing replayability. The plan also scoped an optional real-time OLAP pilot alongside OpenSearch for the workloads where columnar aggregation fits better. Success criteria were set like an analytics SLA: near-zero dropped events at peak, sub-60–90-second event-to-dashboard freshness plus hourly rollups, and a measured, per-component cost per ingested event trending down.
Production outcomes
| KPI | Result |
|---|---|
| Analytics throughput | ~3 billion events/month through the streaming estate — Kinesis ingestion, ~15–20 Lambda transform consumers, OpenSearch aggregation, S3 archival — in continuous production operation. |
| Freshness contract | Sub-60–90-second event-to-aggregate freshness plus hourly rollups held as the modernization’s success criterion — analytics latency treated as a product SLA, not an aspiration. |
| Unit economics | Every reliability and cost driver mapped to a specific AWS-native remediation — de-skew, edge enforcement, append-only aggregates, ILM — with per-ARN cost telemetry making cost-per-event a managed metric. |
| Lessons & continuation | Streaming analytics platforms degrade by accretion — periodic architecture-of-record reviews with costed fixes are how they stay sub-linear; and a replay lake under the analytics tier converts risky schema and index changes into routine operations. |