Skip to content

Uber

Uber (uber.com/blog/engineering) is the largest mobility platform in the world (70+ countries, 10,500 cities, 130M+ customers as of 2024) and, via Uber Eats, the largest food-delivery platform ex-China (45+ countries). The engineering org has generated an unusually rich body of public system-design writing — TChannel, Hyperbahn, Ringpop, Schemaless, M3, Jaeger, H3, RIBs, Cadence, Michelangelo, Hudi were all invented, deployed at scale, and open-sourced at Uber.

Tier classification

Tier 1 (pending direct RSS scraper — see raw/_feeds.yaml note "Uber pending HTML scraper" in [[AGENTS.md]]). For now the wiki reaches Uber content through secondary aggregators (High Scalability, this companies/highscalability page, Fly.io commentary) and through linked-from references in Cadence, Hudi, etc.

Architectural eras (per the 2024 Josh Clemm retrospective)

Era Architecture Primary data store
2009 LAMP Single PHP/MySQL app, source code in Spanish MySQL
2011 two-monolith dispatch (Node.js) ↔ Object Node ↔ API (Python) MongoDB → Redis / PostgreSQL
2013 SOA API split into ~100 Python/Tornado microservices PostgreSQL
2014 Halloween rewrite Schemaless on MySQL; Cassandra for dispatch MySQL (Schemaless) + Cassandra
2014 dispatch split RTAPI Node.js gateway + new dispatch with geospatial index + systems/ringpop gossip
2016+ mobile RIBs across rider / driver / Eats / Freight —
2018 Project Ark Consolidation: Java + Go official; Python/JS deprecated for backend; monorepo per language —
2020 Edge Gateway Four-layer stack: Edge / Presentation / Product / Domain —
2021+ Fulfillment rewrite NewSQL rewrite on Spanner Spanner
2023+ cloud Crane makes 4,000+ stateless microservices cloud-portable Google + Oracle cloud

Key systems

In-house, open-sourced:

In-house, not open-sourced (microservice-platform tooling):

Adopted / migrated to:

Deprecated / archived:

  • PostgreSQL (single-DB era, replaced by Schemaless-on-MySQL + Cassandra in 2014).
  • Python / JavaScript on the backend (deprecated by Project Ark, 2018+; still used for mobile/web/ML).
  • Tornado — Python async framework used heavily during 2013–14 SOA; deprecated with Python-on-backend.
  • Merckx — pre-Jaeger distributed tracing.

Architectural themes (for cross-reference)

  • service-oriented-architecture — Uber's 2013–18 microservice explosion is one of the canonical real-world examples; its reversal via Project Ark language consolidation is equally instructive.
  • concepts/monolith-vs-microservices-pendulum — the 2013 split + 2018 Project Ark consolidation is a textbook case.
  • concepts/distributed-monolith — the 2018 Project Ark framing of "thousands of microservices, 12,000 repos, 5-6 systems doing 75% the same thing" is the canonical symptom description.
  • traveling-salesman-problem — the TSP-variant shape of Uber's dispatch matching.
  • concepts/geographic-sharding — the sharding primitive under dispatch.
  • two-monolith-architecture — the 2011 dispatch + API split.
  • geospatial-gossip-sharding — 2014 dispatch rewrite: S2/H3 cells as shard key over Ringpop gossip.
  • layered-gateway-architecture — 2020 Edge Gateway four-tier stack.
  • language-consolidation-for-fleet-standardization — 2018 Project Ark's Java+Go consolidation + monorepo-per-language cleanup.

Recent articles

  • 2024-03-14 — A Brief History of Scaling Uber (via High Scalability; Josh Clemm / Uber Eats, 2024-03-14) — canonical source for all eight architectural eras above. Covers the full 2009 LAMP → 2023+ Crane trajectory: two-monolith split, Halloween 2014 Schemaless rewrite, 2014 dispatch split + RTAPI + S2/Ringpop geospatial sharding, 2016+ RIB mobile, 2018 Project Ark consolidation, 2020 Edge Gateway, 2021+ Fulfillment on Spanner, 2023+ Crane cloud migration.
Last updated · 766 distilled / 2,225 read