GitHub architecture: how GitHub scaled (5 case studies)
GitHub.com runs on MySQL. GitHub's 2021 post covers defining schema domains and linting cross-domain queries so table groups could move onto separate MySQL clusters. Its 2023 post covers upgrading the whole fleet to MySQL 8.0 with staged replicas and a working rollback path, at 5.5 million QPS, 300+ TB and 50+ database clusters. Push processing was broken into smaller, independently retried jobs driven by Kafka events.
We track 5 public engineering write-ups by GitHub, published between 2021 and 2026. Techniques that come up more than once: read replicas (2). Stack mentioned most: Azure Blob Storage (2), Git (2), MySQL (2), Ruby on Rails (2) and Spokes (2). 3 of the 5 state concrete scale numbers, for example "99.99999% of repositories copied to Azure". Each card below links to our short summary and the original post.
Tech used in GitHub's scaling write-ups
GitHub scaling timeline: every story, summarized
- 2021-09-27
Partitioning GitHub's relational databases to handle scale
GitHub defined schema domains and linted cross-domain queries so it could move table groups onto separate MySQL clusters.
- 2023-12-07
Upgrading GitHub.com to MySQL 8.0
How GitHub upgraded its whole MySQL fleet to 8.0 with staged replicas and a working rollback path.
- 2024-06-11
How we improved push processing on GitHub
GitHub broke one huge push-processing job into smaller, independently retried jobs driven by Kafka events.
- 2026-10-06
Building Git infrastructure for agent-scale development
GitHub explains why agent workloads strain Spokes, which keeps five durable copies of each repo on fileserver disks, so every added read replica slows writes. The new design coordinates only the ref update, moves compaction and GC to separate workers, and separates storage from compute: Azure Blob Storage holds the authoritative data while lightweight caching workers serve reads.
- 2026-10-21
The bridge to agent-scale Git infrastructure
GitHub has copied 99.99999% of its Git repositories to Azure, where most now keep two of their five replicas and Azure serves about half of Git traffic. The busiest remaining repositories were blocked by a ~25ms cross-region round trip, because Spokes held a repository-wide lock for each write while waiting on the slowest healthy replica. Scoping the quorum to individual Git references lets writes to different branches proceed in parallel (3-4x higher throughput in internal testing), and a virtual write replica that streams writes into Azure Blob Storage lets stateless read replicas scale out on demand.
FAQ
What database does GitHub use?
MySQL. The GitHub posts we track describe 50+ MySQL database clusters, 300+ TB and 5.5 million QPS (2023), with table groups split across clusters by schema domain (2021).
How did GitHub upgrade to MySQL 8.0?
GitHub upgraded its whole MySQL fleet to 8.0 with staged replicas, so the new version served real traffic before becoming primary, and kept a working rollback path (2023 post).
How does GitHub process git pushes at scale?
GitHub's 2024 post describes breaking one huge push-processing job into smaller, independently retried jobs driven by Kafka events, in its Ruby on Rails app.