The B2B Podcast Index
Index
All categories
MarketingSalesSaaSFinanceHROpsLeadershipCustomer SuccessAI & DataProductStartups & FoundersRevOpsEngineering & DevTools
MethodologySubmit
Best of:MarketingSalesSaaSFinanceHROpsLeadershipCustomer SuccessAI & DataProductStartups & FoundersRevOpsEngineering & DevTools
An independent project byFame
SearchBest episodesGuestsInsightsMethodologySubmit a podcast
Index/Engineering & DevTools/The CTO Podcast with Fexingo
The CTO Podcast with Fexingo artwork

How Datadog Rebuilt Its Observability Pipeline for 100 Trillion Events Daily

The CTO Podcast with Fexingo · 2026-06-28 · 14 min

0:00--:--

Key moments - from our scoring

Substance score

66 / 100

Five dimensions, 20 points each

Insight Density16 / 20
Originality14 / 20
Guest Caliber6 / 20
Specificity & Evidence18 / 20
Conversational Craft12 / 20

Datadog's infrastructure team faced a critical breaking point in late 2023 when their legacy intake architecture - built on monolithic Kafka clusters with custom consumers - began exhibiting severe backpressure at 30 trillion events daily, pushing p99 ingestion latency from 200ms to 2 seconds. The company embarked on a multi-phase re-architecture starting in early 2024. Phase one implemented tenant-aware sharding using two-level hashing with live rebalancing to distribute customer traffic without creating hot spots. Phase two replaced Java-based stream processors on YARN with a Rust-based micro-batch processing model that aggregates events into 1,000-event batches, achieving 40% CPU reduction and 60% latency improvement. The critical innovation was phase three: Vulcan, a custom columnar store optimized for immutable, append-only observability data with streaming dictionary compression achieving 10x storage reduction. The query layer uses segment metadata indexes, bloom filter indexes on common dimensions, and speculative execution with graceful degradation to approximate querying. By Q2 2025, Datadog achieved 100+ trillion events daily processing with sub-200ms ingestion latency and sub-500ms dashboard query latency while maintaining backward compatibility through parallel pipeline migration and canary testing.

Key takeaways

  • →Datadog moved from monolithic Kafka to regional, tenant-aware shards using two-level hashing and live rebalancing, preventing single-customer traffic spikes from cascading across all tenants.
  • →Rewriting stream processors in Rust reduced per-event CPU cost by 40% and p99 tail latency by 60%, solving Java garbage collection pauses under high throughput.
  • →Custom columnar storage (Vulcan) with streaming dictionary compression achieves 10x reduction in raw storage size and enables rapid query execution through time-partitioned segments and SIMD vectorized processing.
  • →Segment metadata indexing and bloom filter pre-filtering eliminate 80-90% of segments before execution, with speculative execution and 100ms timeouts ensuring sub-500ms dashboard query latency.
  • →18-month re-architecture from early 2024 to Q2 2025 scaled event processing from 30 to 100+ trillion daily without breaking backward compatibility through parallel migration and extensive automated canary testing.

Topics in this episode

DatadogKafka shardingConsistent-hash ring load balancingRust stream processorsMicro-batch processingVulcan columnar storageStreaming dictionary compressionBloom filter indexingSegment metadata indexesSIMD vectorized execution

Questions this episode answers

What caused Datadog's ingestion pipeline to hit its breaking point?

Around late 2023, their monolithic Kafka cluster architecture began experiencing backpressure cascades at 30 trillion events per day, with p99 ingestion latency ballooning from 200ms to 2 seconds because a single large customer spike could impact all tenants.

How does Datadog handle hot spots in their sharded ingestion layer?

They use a two-level hashing approach: customer IDs are first hashed to a shard group, then consistent-hash rings distribute across Kafka brokers, plus a dynamic load-shedding mechanism that can transparently move customer traffic to different shards if CPU or memory thresholds are exceeded.

Why did Datadog rewrite their stream processors in Rust instead of optimizing Java?

Java's garbage collection was causing unpredictable pauses under high throughput; Rust eliminated GC pauses and reduced memory usage while enabling more complex parsing like custom log formats without performance penalties.

What is Vulcan and how does it compress observability data?

Vulcan is Datadog's custom columnar store that uses streaming dictionary compression, dynamically building dictionaries per time-partitioned segment as events arrive; low-cardinality fields achieve 30:1 compression ratios while overall storage is reduced 10x compared to uncompressed JSON.

How does Datadog achieve sub-500ms query latency at 100 trillion events per day?

The query engine uses segment metadata indexing and bloom filters to prune 80-90% of irrelevant segments before execution, vectorized SIMD processing of 4,096-event batches, and speculative execution with graceful degradation to approximate querying for dashboards.

What our scoring noted

Our reviewer’s read on each dimension, with quotes from the episode.

Insight Density

16 / 20

The episode delivers concrete technical insights about large-scale observability infrastructure: sharding strategy with live rebalancing, micro-batching for stream processing, custom Rust rewrites, columnar storage with dictionary compression, bloom filter indexing, and speculative execution for tail latency. However, it includes some softer framing and transition segments that dilute density - the Patreon mention is pure filler, and some host questions are expansive rather than probing deeper.

Around late 2023, their legacy intake was built on a monolithic set of Kafka clusters with custom consumers. It worked fine at 10 trillion events a day. But at 30 trillion, they started seeing backpressure cascades.
They use a technique called 'streaming dictionary compression.' As events come in, they build a dynamic dictionary per segment. New values get added on the fly.

Originality

14 / 20

The framing of observability scaling and specific technical solutions (Vulcan, streaming dictionary compression, speculative execution, approximate querying) are presented with concrete detail that moves beyond generic scaling advice. However, the underlying patterns - sharding, columnar storage, SIMD vectorization, caching strategies - are established techniques, and the episode doesn't challenge conventional thinking or present genuinely counterintuitive arguments about how to approach the problem.

Datadog uses a two-level hash. First, they hash the customer ID to assign them to a shard group. Then within that group, they use a consistent-hash ring to distribute across actual Kafka brokers.
They claim a 40 percent reduction in per-event CPU cost and a 60 percent reduction in p99 tail latency. The Rust parser doesn't need a GC pause, and it uses a fraction of the memory.

Guest Caliber

6 / 20

The episode lacks a named guest entirely. Lucas and Luna appear to be hosts discussing Datadog's architecture, but there is no practitioner from Datadog, no engineer who built these systems, and no firsthand account. This is a secondhand narrative about technical decisions rather than direct testimony from someone who made the trade-offs.

Started in early 2024, and most of it was in production by Q2 2025. So about 18 months of major engineering work across multiple teams.
Lucas: Yes.

Specificity & Evidence

18 / 20

The transcript is exceptionally rich with specific numbers, metrics, and technical details: 100 trillion events/day, p99 latencies (200ms ingestion, 500ms queries), 40% CPU reduction, 60% p99 latency reduction, 10x storage compression, 30:1 to 2:1 compression ratios by field, 2 bits per event for bloom filters, 1% false positive rate, 80-90% segment elimination, 4,096-event batches, 100ms per-segment timeout, 1% accuracy variance in approximations, and 18-month timeline. The only limitation is lack of direct verification from an insider.

As of mid-2026, they're processing over 100 trillion events per day. That's not a typo. One hundred trillion. And that number has roughly doubled every year for the last three years.
For fields with low cardinality - say, a data center name - they achieve compression ratios of 30 to 1. For high-cardinality fields like request IDs, it's closer to 2 to 1. But overall, they claim a 10x reduction in raw storage size compared to uncompressed JSON.

Conversational Craft

12 / 20

The hosts demonstrate genuine technical fluency and ask clarifying follow-ups that show understanding (e.g., 'How do you decide which customer goes in which shard without creating hot spots?', 'What about the query engine itself?'). However, the conversation lacks productive pushback, skepticism, or sharp challenges. Most responses are accepted without debate, and there are no moments where a host questions a claim's validity or asks for trade-offs. The Patreon plug also breaks conversational momentum.

That's the tricky bit. Datadog uses a two-level hash.
And in observability, two seconds is an eternity. If your alerting is delayed by two seconds during an incident, you might as well not have it.

Conversation analysis

Computed from the transcript - who did the talking, and the words that came up most.

Most-used words

lucas24luna23events16data15segments14query14datadog13segment13trillion8ingestion8processing7custom7engine7engineering6observability6entire6

Episode notes

Episode 79 of The CTO Podcast dives into the engineering behind Datadog's core pipeline. Hosts Lucas and Luna unpack how Datadog re-architected its ingestion, processing, and storage layers to handle over 100 trillion events per day by mid-2026. They explore the shift from a monolithic intake to a sharded, stream-oriented architecture, the decision to build custom compression rather than use off-the-shelf codecs, and how the team maintained sub-second query latencies while scaling throughput by 10x over three years. Along the way, they discuss tradeoffs between consistency and availability, the role of probabilistic data structures for sampling, and why Datadog eventually rewrote parts of its query engine in Rust. This episode offers a concrete look at what it takes to keep observability observant when the data never stops growing. Perfect for engineering leaders and senior architects wrestling with scale.

Full transcript

14 min

Transcribed and scored by The B2B Podcast Index.

Lucas: So every time you open a dashboard at work - whether it's Datadog, Grafana, New Relic - you're looking at a live visualisation of trillions of machine-generated events that had to be ingested, processed, stored, and indexed in near real-time. And the engineering challenge behind that pipeline is absolutely brutal. Luna: Brutal is the right word. I've talked to infra teams who say their observability bill is one of the top three line items in their cloud spend.

The scale is just - it's becoming its own problem. Lucas: Exactly. And Datadog is probably the most visible player here. As of mid-2026, they're processing over 100 trillion events per day.

That's not a typo. One hundred trillion. And that number has roughly doubled every year for the last three years. So a couple of years ago they had to fundamentally rethink their entire pipeline - from the ingestion layer all the way down to storage.

Luna: Was there a specific breaking point? A moment where they said okay, the current architecture won't survive another year? Lucas: There was. Around late 2023, their legacy intake was built on a monolithic set of Kafka clusters with custom consumers.

It worked fine at 10 trillion events a day. But at 30 trillion, they started seeing backpressure cascades. A single spike from a large customer - think a Black Friday for an e-commerce client - could cause latency to balloon across all tenants. The p99 for event ingestion, which had been around 200 milliseconds, started creeping toward two seconds.

Luna: And in observability, two seconds is an eternity. If your alerting is delayed by two seconds during an incident, you might as well not have it. Lucas: Right. So they embarked on a multi-phase re-architecture.

Phase one was about sharding the ingestion layer. Instead of one giant Kafka cluster, they moved to a set of regional, tenant-aware shards. Each shard handles a subset of customers, so a spike in one shard doesn't affect the others. Luna: That sounds like a classic sharding pattern, but the hard part is - how do you decide which customer goes in which shard without creating hot spots?

Lucas: That's the tricky bit. Datadog uses a two-level hash. First, they hash the customer ID to assign them to a shard group. Then within that group, they use a consistent-hash ring to distribute across actual Kafka brokers.

The key insight was that they also built a load-shedding mechanism: if a shard's CPU or memory crosses a threshold, they can dynamically move a customer's traffic to a different shard. They call it 'live rebalancing.' It happens transparently with a small latency blip - maybe 50 milliseconds - but no dropped events. Luna: Okay, but ingestion is only the front door.

What about processing? Once events are in Kafka, they have to be parsed, enriched, and indexed. That's where the real compute lives. Lucas: Right.

That's phase two. Datadog's processing layer was originally a set of Java-based stream processors running on YARN. By 2024, that setup was hitting memory walls. Each event - say a single metric or a span - has to be parsed into a structured format, enriched with metadata like host tags and service names, and then written to multiple indexes: one for the live tail, one for search, one for analytics rollups.

Luna: And each of those indexes is a different data structure with different write patterns. So the processing step isn't just ETL - it's ETL to three different targets simultaneously. Lucas: Exactly. Datadog's solution was to move from a record at a time model to a micro-batch model.

They aggregate events into small batches - about 1,000 events or 50 milliseconds of data, whichever comes first - and then process the entire batch through a pipeline of stateless operators. That gives them better cache locality and fewer memory allocations. They also rewrote the parsing engine in Rust, because Java's garbage collection was causing unpredictable pauses under high throughput. Luna: So phase two is a Rust rewrite.

That's a pretty serious engineering investment. Was it worth it? Lucas: They claim a 40 percent reduction in per-event CPU cost and a 60 percent reduction in p99 tail latency. The Rust parser doesn't need a GC pause, and it uses a fraction of the memory.

But the real win is that it allowed them to handle much more complex parsing - things like custom log formats - without a performance penalty. Luna: Quick honest thing - a handful of listeners chip in monthly through buy me a coffee dot com slash fexingo, and that's literally what funds making this many of these episodes. If these conversations are useful for what you're building or running, that's where the support lives. Lucas: Yeah, it's a small group, but it's the whole reason we can keep this ad-free and focused on the real engineering details.

Appreciate every one of you. Luna: Alright, back to Datadog. So they've solved ingestion and processing. But storage is the next monster.

How do you index 100 trillion events per day and still make them searchable in seconds? Lucas: This is where things get really interesting. Datadog's storage layer is built on a custom columnar store they call 'Vulcan' - not the database, but an internal project. Vulcan is designed specifically for observability data, which has a few unique properties: events are immutable, writes are append-only, and queries are almost always time-range bounded.

Luna: So time-series characteristics, but with arbitrary metadata dimensions. That's a hard fit for traditional time-series databases. Lucas: Exactly. Vulcan organises data into time-partitioned segments - each segment covers a fixed time window, like 15 minutes.

Within a segment, events are sorted by timestamp and stored in a compressed columnar format. The compression is the secret sauce: Datadog developed a custom scheme that takes advantage of the fact that many fields - like hostname or service - repeat frequently within a short time window. Luna: So they're doing dictionary compression, but tuned for streaming? Because you don't know the dictionary ahead of time when you're ingesting in real time.

Lucas: Precisely. They use a technique called 'streaming dictionary compression.' As events come in, they build a dynamic dictionary per segment. New values get added on the fly.

The dictionary itself is compressed and stored alongside the data. For fields with low cardinality - say, a data center name - they achieve compression ratios of 30 to 1. For high-cardinality fields like request IDs, it's closer to 2 to 1. But overall, they claim a 10x reduction in raw storage size compared to uncompressed JSON.

Luna: And that 10x directly impacts query speed. Less data to scan means faster searches. Lucas: Right. But queries aren't just about scanning less data.

They also need to skip irrelevant partitions quickly. Datadog uses a technique they call 'bloom filter indexes' on common dimensions. For example, if you query for errors in service 'checkout' in the last hour, the system first checks a bloom filter on the service dimension. If the filter says 'no checkout events in this segment,' it skips the entire segment without decompressing anything.

Luna: That's clever. But bloom filters have false positives. So they can still hit segments that don't have the data. Lucas: Right, but false positives just mean an extra decompression and scan - not wrong results.

The trade-off is worth it because the bloom filters are tiny: about 2 bits per event per dimension. With a 1 percent false positive rate, they skip 99 out of 100 irrelevant segments. That's huge for query performance. Luna: What about the query engine itself?

I know Datadog's query language is proprietary, but how does it execute across these distributed segments? Lucas: Phase three of the re-architecture was rewriting the query engine. The old engine was a simple pushdown: it sent the query to every segment, each segment evaluated it locally, and then results were merged. That worked when segments were few, but with 100 trillion events a day, you have tens of thousands of segments per query.

The network overhead was killing latency. Luna: So they needed to reduce the number of segments they even touch. That's where the bloom filters come in, but also - they must have added some kind of metadata-based pruning. Lucas: Exactly.

Datadog built a 'segment metadata index' that stores summary statistics for each segment: min and max timestamps, cardinality estimates for each dimension, and a list of distinct values for low-cardinality fields. The query planner uses that metadata to prune segments before sending any execution plan. They claim this eliminates 80 to 90 percent of segments before any data is touched. Luna: That's dramatic.

So the actual execution only hits the segments that could possibly contain relevant data. Lucas: Yes. And within those segments, the engine uses vectorized execution. Each segment is read in batches of 4,096 events, decompressed into columnar format, and then processed using SIMD instructions.

For aggregations like count or avg, they can process an entire batch in a few microseconds. Luna: What about tail latencies? In observability, the p99 matters more than the average. A dashboard that sometimes takes 10 seconds is useless.

Lucas: They focused heavily on that. One technique is 'speculative execution.' If a query involves multiple segments, the engine sends the query to all of them in parallel, but it also sends to a few redundant segments that might have overlapping data. If one segment is slow, the redundant responses can mask it.

They also set a timeout per segment - typically 100 milliseconds - and if a segment doesn't respond in time, the engine falls back to a precomputed rollup. Luna: So they degrade gracefully. Instead of showing nothing, they show approximate data. That's a good product decision.

Lucas: Exactly. They call it 'approximate querying.' For dashboards, the default is to use approximate mode for any query that scans more than 10,000 segments. Users can opt into exact mode, but it takes longer.

Most customers never notice the difference because the approximations are within 1 percent for common queries. Luna: Let's zoom out a bit. This entire re-architecture - sharded ingestion, Rust stream processors, Vulcan storage, metadata pruning, speculative execution - how long did it take, and what's the impact been? Lucas: Started in early 2024, and most of it was in production by Q2 2025.

So about 18 months of major engineering work across multiple teams. The result: they went from handling 30 trillion events per day in early 2024 to over 100 trillion today, with p99 ingestion latency under 200 milliseconds and query latency under 500 milliseconds for the vast majority of dashboard queries. Luna: And they did it without breaking backward compatibility. Customers didn't have to change a single agent configuration.

Lucas: That's the part that's hardest to appreciate. When you're re-architecting a live system that processes trillions of events a day, you can't just flip a switch. They ran the old and new pipelines in parallel for months, gradually shifting traffic. And they built extensive automated canary testing - replaying production traffic against the new pipeline and comparing results.

Luna: I think the takeaway for engineering leaders is that scaling observability is not just about throwing more hardware at the problem. It requires deep rethinking of every layer - ingestion, processing, storage, query - and a willingness to build custom infrastructure when off-the-shelf solutions don't cut it. Lucas: Absolutely. And the decision to invest in a custom columnar store and a custom compression scheme, rather than just scaling up Elasticsearch or ClickHouse, is a bet on owning the entire stack.

It's a huge engineering cost, but for a company whose product is observability, it's their core competitive advantage. Luna: So the next time you open a Datadog dashboard and see a graph render in under a second, you'll know there's a whole pipeline of Rust code, dictionary compression, and bloom filters making that happen. Lucas: Exactly. And the interesting question is: where does the next bottleneck appear?

We're already seeing hints that the network itself is becoming the constraint. Datadog has started experimenting with edge-based pre-processing - running lightweight aggregations on the agent itself before data leaves the customer's environment. That could be phase four. Luna: That would be a fascinating episode.

Maybe when they ship it. Lucas: Definitely worth covering. For now, though, the takeaway is clear: when your data grows 2x every year, you have to rethink everything, and you have to keep rethinking it.

Related episodes across the Index

Other episodes covering the same guests and topics, from across The B2B Podcast Index.

  • Cloudsmith with Cian ButlerRust in Production · on Datadog95 / 100
  • Liz Christo, Partner @ Stage 2 CapitalVenture Passport · on Datadog89 / 100
  • How a Solo Dev Hit 10K MRR With a SaaS That Sells to Other SaaS CompaniesThe Indie Hacker Podcast with Fexingo · on Datadog83 / 100
  • How Finance Teams Are Actually Using AI | Opendoor, Datadog, PwCRun the Numbers · on Datadog78 / 100
  • Why AI Model Costs Are Crashing Faster Than ExpectedChatGPT and Beyond with Fexingo · on Datadog76 / 100
  • Masters of MEDDICC | Lucy Williams-Jones | The Formula Behind 25 Presidents Clubs in a RowMasters of MEDDICC · on Datadog75 / 100

More from The CTO Podcast with Fexingo

All episodes →
  • How GitHub Migrated 100 Million Repositories to a New Storage Engine76 / 100
  • How Dropbox Rebuilt Its Sync Engine for 700 Million Users85 / 100
  • How Skyscanner Migrated 300 Microservices to Event-Driven Architecture85 / 100
  • How Palantir Rebuilt Its Foundry Ontology for Government AI Deployments85 / 100
  • How Netflix Rebuilt Its Content Delivery for 300 Million Subscribers85 / 100
Explore the best B2B Engineering & DevTools podcasts →
All The CTO Podcast with Fexingo episodes →