Case study

Booking.com moved pricing and inventory data from batch to under a second

Batch pipelines off MySQL couldn't keep pricing, availability and recommendations current as volume grew.

Booking.com

Booking.com

10xmore data pipeline throughput

The workflow before#

Booking.com's operational data lived in MySQL and moved downstream in batch jobs. When a property changed a price or closed a room, analytics and downstream systems didn't see it until the next run. MySQL write throughput was the ceiling on how much could move, and scaling meant buying more hardware. Engineers spent a large share of their week keeping the pipelines alive: rerunning failed jobs, chasing lag, patching scripts. Peak booking seasons made it worse. The company was building its Big Data Exchange (BDX) on Snowflake and its own governance tooling, and it needed a way to feed it that could keep up.

What we built#

We replaced the batch hand-off with a change data capture pipeline. Every change in MySQL is read as it happens and streamed into BDX and Snowflake, so a price or availability update reaches analytics in under a second. The pipeline scales with volume on its own, and engineers stopped spending their weeks keeping it running.

Every change, as it happens

Debezium reads the MySQL change log and publishes each insert, update and delete to Kafka. We chose change data capture over faster batch jobs because it takes the load off the source databases and gives every downstream team the same ordered stream of changes.

Scaling that follows the traffic

Airflow orchestrates the pipelines and Spark handles the large batch analytics, all on Kubernetes with autoscaling tied to data volume. The system absorbs 3x traffic spikes without anyone stepping in, so a holiday rush is no longer an on-call event.

Data that lands where teams work

Changes land in BDX under Booking.com's own governance rules, in Snowflake for analysts and in DynamoDB for fast lookups. Each team reads from the store that fits its job instead of building another copy.

How we delivered it

A team of 8 worked embedded with Booking.com's data engineers over a 40 week engagement. We proved the architecture with a proof of concept first, load tested at 2x projected peak, then rolled out in phases. Old and new paths ran side by side with traffic shifting gradually until the numbers matched. We paired with Booking.com's engineers throughout so they owned the system at handover.

Before and after#

MeasureBeforeAfter
Price and availability propagationNext batch runUnder 1 second
Pipeline throughputCapped by MySQL writes10x higher
Engineer time on pipeline upkeepBaseline70% less
Infrastructure cost for the pipelinesBaseline30% lower
Traffic spikesManual intervention3x absorbed automatically

What's next#

The streaming layer gives Booking.com clean, current event data in one place. That's the footing for models and copilots that answer questions on live pricing and inventory instead of yesterday's extract, and for new pipelines built on the same pattern without starting over.

ShareLinkedInEmail

Ingestion: Debezium reads the MySQL binary log and publishes inserts, updates and deletes to partitioned Kafka topics, with schema changes handled automatically. AWS Lambda, Amazon SQS and EventBridge handle lightweight processing and event routing.

Processing and storage: Airflow DAGs schedule and monitor the flows; Spark jobs on Amazon EKS run batch analytics. Data lands in BDX (Booking.com's internal data exchange, built on Snowflake with proprietary governance and dbt transformations), Snowflake for analytics and DynamoDB for low latency lookups. The codebase moved from Java only to Java and Python.

Operations: infrastructure is defined in Terraform, deployed through CI/CD, and monitored with Prometheus and Grafana with sub-minute alerting. Disaster recovery procedures were tested before cutover.

Next step

Let's build the case study we tell next.