Skip to content

> Data platforms

Project Siphon

Real-time change data capture for every GitLab deployment.
← All work
Production · GitLab
  • PostgreSQL
  • NATS JetStream
  • Go
  • Apache Iceberg
  • Nessie / Open Catalog
  • Snowflake

§ 01

Problem

Earlier pipelines missed 30–40% of database changes, so analytics, product intelligence and AI were built on incomplete data.

Legacy pipelines tied up data and SRE engineers in maintenance.

GitLab runs three deployment models and was moving to a cell-based architecture, so CDC had to work everywhere.

§ 02

Architecture

PostgreSQL changes are published into NATS JetStream, capturing every insert, update and delete.

Go consumers write Parquet through buffered and direct write paths, with right-sized files and schema drift handled by versionHash keying.

Apache Iceberg tables on Nessie / Snowflake Open Catalog serve the same governed data to Snowflake and Spark, with Prometheus metrics at every stage.

§ 03

Approach

Run as DRI from feasibility to production through a working council of seven functions: data engineering, analytics, data science, instrumentation, product engineering, database operations and SRE.

Mirror staging and production in a Dockerised Nessie/GCS dev environment, cutting onboarding from days to under 2 hours.

Design for the Cells migration from the start, so one platform serves all three deployment models.

§ 04

Impact

of database changes captured, closing a 30–40% gap
100%
realized annual infrastructure savings
$500K+
freed from legacy pipeline maintenance
~3 FTE
total annual value
~$1M/yr

Get the next case study and the field notes that built it.

Subscribe by email (opens in a new tab)

Free. Unsubscribe with one click.