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 NodeAPI (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)

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 · 542 distilled / 1,571 read