VeUP
← All case studies
Amazon Kinesis · Kinesis ingest hardening
Feroot logo

Hardening a ~3-billion-events/month client-side threat-detection pipeline on AWS

AdvisoryTarget-state architecture design & costed POCCost-optimization deep diveStreaming ingest & data-lake designMarketplace listing launchManaged billing & resell
3 billion
browser-side telemetry events a month, at peak scale
Costed plan
every reliability and cost driver paired with a fix
Amazon Kinesis Data StreamsAmazon Kinesis Data FirehoseAWS LambdaAmazon S3

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

KPIResult
Streaming scaleUp 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 retiredHot-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 & replayFirehose → 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 & continuationPartition-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.
AWS services in production
Amazon Kinesis Data Streams (ingest + enriched)Amazon Kinesis Data FirehoseAmazon S3 (raw-event replay store)AWS Lambda (consumers)Amazon API Gateway (edge)Amazon OpenSearch ServiceAmazon CloudWatch