Hardening a ~3-billion-events/month client-side threat-detection pipeline on AWS
The streaming heart of Feroot’s threat-detection platform is Amazon Kinesis: an ingest stream and an enriched stream carrying up to ~3 billion browser events a month into ~15–20 Lambda consumers, with Kinesis Data Firehose landing every raw event in Amazon S3 for backup and replay. VeUP’s engagement diagnosed the streaming tier’s real failure modes and scoped the pattern that removes them.
The challenge
Kinesis distributes work by partition key — and the platform’s key correlated with customer project, so a single hot project (spikes of ~0.5 billion events/month) could drive one shard to its limits while its neighbors idled. Hot shards meant throttling at peak precisely when a security pipeline most needs to be ingesting, and the pipeline’s entitlement rejections happened after ingestion — the stream doing paid work on traffic the platform would discard. For a detection product whose customers rely on freshness, the streaming tier had to hold near-real-time delivery under bursty, skewed, adversarial traffic shapes.
The solution
VeUP ran discovery on the live streams and produced a costed target pattern. The core fix is key de-skew: a partition-key scheme that spreads any single project’s burst across shards, so stream capacity is a pool rather than a lottery, paired with edge throttling at the API tier so out-of-entitlement traffic never reaches the stream at all. The two-stream topology (raw ingest, enriched) is retained — it cleanly separates the ingest contract from consumer-facing enrichment — with the ~15–20 Lambda consumers scaled against de-skewed shards, and Amazon Kinesis Data Firehose continuing to archive every raw event to S3 as the replay path that makes downstream mistakes recoverable. Success criteria were set as measurable stream health: near-zero throttled or dropped events at peak, sub-60–90-second end-to-end freshness, and per-ARN cost telemetry on the streaming tier so shard capacity tracks value, not skew.
Production outcomes
| KPI | Result |
|---|---|
| Streaming scale | Up to ~3 billion events/month across the ingest and enriched streams, feeding ~15–20 Lambda consumers — production Kinesis operation at SIEM-class volume. |
| Failure modes retired | Hot-shard skew and post-ingestion throttling identified from live stream metrics and scoped out via key de-skew plus edge enforcement — capacity buys throughput again instead of absorbing imbalance. |
| Durability & replay | Firehose → S3 raw-event archive preserved as the pipeline’s backstop: every event replayable, so consumer-tier changes and OpenSearch reindexing carry no data-loss risk. |
| Lessons & continuation | Partition-key design is capacity planning in disguise — de-skew before adding shards; and in entitlement-metered platforms, the stream should only ever see traffic someone will pay to process. |