Ravindra BagaleCourses & study guides Track your progress

Guides

Uber Architecture Explained: How Uber Matches Riders and Drivers

Short answer: Uber runs about 4,000 microservices, grouped into domains and layers (its DOMA design, 2020). Since 2024 they run on Kubernetes: more than 50 compute clusters across Uber's own data centres and the cloud providers Oracle Cloud and Google Cloud (2025). Services are deployed about 100,000 times a day. Much online data lives in Docstore, Uber's database built on MySQL, with an integrated Redis cache called CacheFront serving over 150 million reads per second (2025).

Suppose you book an Uber auto in Bengaluru

You open Uber at Koramangala, choose Uber Auto and tap Confirm. In simple terms:

  1. Your app sends the request to Uber's backend, which is made of thousands of services.
  2. Services in different domains (riders, pricing, matching, maps, payments) work together.
  3. These services run as containers on Kubernetes clusters in Uber's data centres or on Oracle Cloud and Google Cloud.
  4. Trip and user data is read from Docstore; most reads are served from the CacheFront Redis cache, with a hit rate above 99.9%.
  5. When data changes, Flux reads MySQL binlogs and refreshes or invalidates the cache, usually in under a second.
  6. A driver accepts, and both apps update live.

What architecture style does Uber use?

Uber is one of the best-known microservices companies, and it has written about both the benefits and the pain.

  1. Domain-oriented microservices (2020): at about 2,200 critical microservices, Uber grouped services into domains, with clean interfaces (gateways) and layers that limit which domains can depend on which.
  2. Kubernetes everywhere (2024 to 2025): stateless services moved from Apache Mesos to Kubernetes in 2024; batch and storage are converging too.
  3. Federation layer "Up": developers manage service lifecycles through Up, which places services onto clusters.
  4. Scale: each cluster has about 5,000 to 7,500 hosts and 250,000 cores; services use about 3 million cores in total.

Uber architecture diagram (public parts)

This diagram shows only what Uber or its partners have shared publicly. Press Play to follow a request step by step.

Watch the orange dot follow each numbered step.
Uber architecture from public information (simplified)Uber data centres + Oracle Cloud + Google CloudOnline storage (Docstore)Simplified; based on publicly shared information.Rider / driverUber appsEdge + domain gatewaysDOMA~4,000 servicesKubernetes, 50+ clustersCacheFrontRedis, 150M+ reads/sFluxCDC from MySQL binlogsUpservice federationMonitoringnot detailedDocstorestorage engine on MySQL
  1. You request an Uber Auto.
  2. The request enters through domain gateways.
  3. Thousands of services handle pricing and matching.
  4. Reads are served from the CacheFront Redis cache.
  5. Flux keeps the cache fresh from MySQL binlogs.
  6. Up places services onto clusters.
  7. Systems are monitored.
  8. Cache misses read Docstore on MySQL.
  9. A driver accepts your trip.
Diagram 1: the public parts of Uber's architecture. Simplified; based only on publicly shared information. Open the diagram as an image (PNG) · WebP

What does Uber use? Main technologies

LayerWhat Uber uses (public)What it does in simple words
ArchitectureDomain-oriented microservices (DOMA)Groups ~4,000 services
ContainersKubernetes (from Mesos, 2024)Runs services
HostingOwn data centres, Oracle Cloud, Google Cloud50+ clusters
FederationUpService lifecycle
DatabaseDocstore on MySQLOnline storage
CacheCacheFront with Redis150M+ reads per second
CDCFluxCache fill and invalidation

Which cloud provider does Uber use?

Uber uses a hybrid, multi-cloud setup. As of 2025 the Container Platform team manages 50+ clusters across regions and zones in on-prem data centres and cloud providers Oracle Cloud and Google Cloud.

How does Uber keep 150 million cached reads per second fresh?

In 2025 CacheFront keeps a huge Redis cache consistent with the database:

  1. Reads first try Redis; missing rows are fetched from the storage engine and written back to Redis.
  2. Writes now return the exact set of changed row keys and a commit timestamp. The query layer then overwrites those cache entries with invalidation markers, either before replying (for read-your-own-writes) or in the background.
  3. Flux still tails MySQL binlogs and refills or invalidates the cache within about a second.
  4. TTL expiry is the third safety net.

Using three ways together let Uber raise TTLs up to 24 hours while keeping hit rates above 99.9%. CacheFront's footprint grew almost four times in a few years.

How big is Uber's Kubernetes platform?

The 2025 migration numbers: numbers: 50+ clusters, each with about 5,000 to 7,500 hosts, 250,000 cores and 50,000 pods; about 4,000 services using about 3 million cores; 100,000 deployments a day, leading to 1.5 million pod launches a day at 120 to 130 pods per second in a single cluster.

How it started: from monolith to thousands of services (before 2020)

  1. Uber started with a monolith and moved to microservices as it grew fast.
  2. In 2016 Uber built Schemaless, a scalable datastore built on MySQL.
  3. Stateless services ran on Apache Mesos (with Uber's Peloton scheduler for batch) for years before the Kubernetes move.
  4. By 2020 the number of microservices made even small features hard to build, which led to DOMA.

How does Uber store data?

  1. Docstore: Uber's online database; a stateless query engine layer over stateful storage engine nodes on MySQL.
  2. CacheFront: Redis cache built into Docstore's query layer, with TTLs up to 24 hours and hit rates above 99.9%.
  3. Big-data storage details are outside these posts and not covered here.

How does Uber monitor its systems?

  1. CacheFront includes a Cache Inspector that measures how stale cached data is (2025).
  2. Deploys are tracked across 100,000 deployments and 1.5 million pod launches per day.
  3. Uber's company-wide metrics and alerting stack is not publicly shared.

If we built an app like Uber on AWS (illustrative)

Please read this first

This section is a learning design by Ravindra Bagale. It is not Uber's real setup. Uber runs on its own data centres plus Oracle Cloud and Google Cloud, not AWS. We use AWS here because it is what you learn in the AWS course.

Suppose you want to build "SawariGo", an auto-rickshaw booking app for a city. Here is a simple AWS layout.

1. Network: VPC, subnets, route tables, gateways

  1. Create one VPC with CIDR 10.0.0.0/16 in the Mumbai region (ap-south-1).
  2. Use two Availability Zones (A and B), so one AZ failing does not stop the app.
  3. In each AZ make three subnets: public (load balancer, NAT gateway), private app (your code) and private data (databases, cache).
  4. Attach one internet gateway (IGW) to the VPC. Public route table: 0.0.0.0/0 → IGW. This route is what makes a subnet public.
  5. Private app route table: 0.0.0.0/0 → NAT gateway, so servers can download updates but nobody can connect in from the internet.
  6. Private data route table: only the local VPC route. Use VPC endpoints to reach S3, DynamoDB and SQS without going over the internet.

2. Compute: where the code runs

  1. ALB with WebSockets.
  2. Services on EKS, grouped by domain.
  3. Trip events through SQS or Kinesis.

3. Storage and databases

  1. ElastiCache for Redis with geo commands for nearby drivers.
  2. DynamoDB for live trip state.
  3. Aurora for accounts and trips; S3 for documents.

4. Monitoring

  1. CloudWatch alarms on matching time.
  2. X-Ray traces between services.

Request flow diagram

Press Play. The numbered list below the diagram lights up with each step.

Watch the orange dot follow each numbered step.
If we built a Uber-like app on AWS (illustrative)AWS Region (for example ap-south-1, Mumbai)VPC 10.0.0.0/16Availability Zone AAvailability Zone BPublic subnet 10.0.1.0/24RT: 0.0.0.0/0 → IGWPublic subnet 10.0.2.0/24RT: 0.0.0.0/0 → IGWApp subnet 10.0.11.0/24RT: 0.0.0.0/0 → NATApp subnet 10.0.12.0/24RT: 0.0.0.0/0 → NATData subnet 10.0.21.0/24RT: local onlyData subnet 10.0.22.0/24RT: local onlyvia VPC endpointsIllustrative learning design only. This is NOT the company's real setup.Userphone appRoute 53DNS lookupCloudFrontCDN edge cacheAmazon S3documents, receiptsIGWApplication Load Balancerspans both AZsNAT gatewayNAT gatewayRide APIEKS pods (auto scaling)Ride APIEKS pods (auto scaling)ElastiCachedriver locations, sessionsAurorariders, drivers, tripsElastiCachedriver locations, sessionsAuroraread replicaSQStrip eventsDynamoDBlive trip stateCloudWatch + X-Raymetrics, logs, traces
  1. You open SawariGo. Route 53 answers.
  2. Map tiles and assets via CloudFront.
  3. From S3.
  4. API calls through the internet gateway.
  5. The ALB forwards to a pod.
  6. The ride API finds drivers.
  7. Nearby drivers from ElastiCache.
  8. Trip saved in DynamoDB and Aurora.
  9. Trip event to SQS.
  10. CloudWatch watches.
  11. Driver on the way.
Diagram 2: an illustrative AWS design for learning. Uber does not necessarily run like this; see the sections above for what is publicly known. Open the diagram as an image (PNG) · WebP

Uber versus our AWS design

PartUber (public info)Our AWS design
HostingOwn DCs + Oracle Cloud + Google CloudAWS
Services~4,000 in domainsA few services on EKS
ContainersKubernetes, 50+ clustersEKS
DatabaseDocstore on MySQLAurora, DynamoDB
CacheCacheFront (Redis)ElastiCache
MonitoringNot detailed hereCloudWatch, X-Ray

Quick quiz: check what you learned

  1. What did Uber migrate from in 2024?

    1. Apache Mesos
    2. AWS Lambda
    3. Windows Server
    4. Mainframes
    Show answer

    A. Uber moved stateless services from Mesos to Kubernetes.

  2. Which clouds does Uber name in 2025?

    1. Only AWS
    2. Oracle Cloud and Google Cloud
    3. Azure only
    4. None
    Show answer

    B. Uber runs on-prem plus Oracle Cloud and Google Cloud.

  3. What is CacheFront?

    1. A front-end app
    2. A payment tool
    3. A Redis cache inside Docstore
    4. A CDN
    Show answer

    C. CacheFront serves 150M+ reads per second.

  4. What does DOMA stand for?

    1. Data On My App
    2. Direct Order Map Access
    3. Driver Online Management API
    4. Domain-Oriented Microservice Architecture
    Show answer

    D. Uber's 2020 design for grouping services.