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:
- systems/tchannel — bi-directional RPC protocol over Hyperbahn; predates Uber's gRPC adoption.
- systems/ringpop — Node.js gossip-protocol-based membership/sharding library; backbone of the 2014 dispatch rewrite.
- systems/schemaless-uber — trip data store on sharded MySQL; Bigtable-shaped sparse 3D hash map.
- systems/m3-uber — metrics platform (Grafana-fronted).
- systems/jaeger — distributed-tracing system (evolved from Uber's earlier Merckx, Zipkin-inspired).
- systems/h3-geo — hexagonal geospatial index (open-sourced to replace Google's S2 for dispatch sharding).
- systems/rib-architecture — Router-Interactor-Builder mobile architecture.
- systems/cadence — long-running workflow engine; the predecessor to Temporal.
- systems/apache-hudi — open-source table format; built at Uber for low-latency CDC data pipelines.
- systems/michelangelo — Uber's internal ML platform.
In-house, not open-sourced (microservice-platform tooling):
- systems/clay-uber — Python/Flask service framework for standardized RESTful backends.
- systems/flipr — feature-flag and rollout-control system.
- systems/uber-dispatch — the rider-driver matching service.
- systems/uber-rtapi-gateway — 2014 Node.js mobile-gateway split out of dispatch.
- systems/uber-edge-gateway — 2020 four-layer gateway rewrite replacing RTAPI.
- systems/uber-fulfillment-platform — 2021+ NewSQL rebuild on Spanner.
- systems/project-crane — 2023+ cloud-portable infrastructure stack.
Adopted / migrated to:
- Google Cloud Spanner — NewSQL store powering the 2021+ Fulfillment Platform.
- systems/presto — interactive analytics on Kafka.
- systems/apache-spark — scaled up for data infrastructure.
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)¶
- concepts/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.
- concepts/traveling-salesman-problem — the TSP-variant shape of Uber's dispatch matching.
- concepts/geospatial-sharding — the sharding primitive under dispatch.
- patterns/two-monolith-architecture — the 2011 dispatch + API split.
- patterns/geospatial-gossip-sharding — 2014 dispatch rewrite: S2/H3 cells as shard key over Ringpop gossip.
- patterns/layered-gateway-architecture — 2020 Edge Gateway four-tier stack.
- patterns/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.
Related¶
- companies/index
- companies/highscalability — aggregator through which most Uber content reaches the wiki today.