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:
- Your app sends the request to Uber's backend, which is made of thousands of services.
- Services in different domains (riders, pricing, matching, maps, payments) work together.
- These services run as containers on Kubernetes clusters in Uber's data centres or on Oracle Cloud and Google Cloud.
- Trip and user data is read from Docstore; most reads are served from the CacheFront Redis cache, with a hit rate above 99.9%.
- When data changes, Flux reads MySQL binlogs and refreshes or invalidates the cache, usually in under a second.
- 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.
- 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.
- Kubernetes everywhere (2024 to 2025): stateless services moved from Apache Mesos to Kubernetes in 2024; batch and storage are converging too.
- Federation layer "Up": developers manage service lifecycles through Up, which places services onto clusters.
- 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.
- You request an Uber Auto.
- The request enters through domain gateways.
- Thousands of services handle pricing and matching.
- Reads are served from the CacheFront Redis cache.
- Flux keeps the cache fresh from MySQL binlogs.
- Up places services onto clusters.
- Systems are monitored.
- Cache misses read Docstore on MySQL.
- A driver accepts your trip.
What does Uber use? Main technologies
| Layer | What Uber uses (public) | What it does in simple words |
|---|---|---|
| Architecture | Domain-oriented microservices (DOMA) | Groups ~4,000 services |
| Containers | Kubernetes (from Mesos, 2024) | Runs services |
| Hosting | Own data centres, Oracle Cloud, Google Cloud | 50+ clusters |
| Federation | Up | Service lifecycle |
| Database | Docstore on MySQL | Online storage |
| Cache | CacheFront with Redis | 150M+ reads per second |
| CDC | Flux | Cache 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:
- Reads first try Redis; missing rows are fetched from the storage engine and written back to Redis.
- 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.
- Flux still tails MySQL binlogs and refills or invalidates the cache within about a second.
- 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)
- Uber started with a monolith and moved to microservices as it grew fast.
- In 2016 Uber built Schemaless, a scalable datastore built on MySQL.
- Stateless services ran on Apache Mesos (with Uber's Peloton scheduler for batch) for years before the Kubernetes move.
- By 2020 the number of microservices made even small features hard to build, which led to DOMA.
How does Uber store data?
- Docstore: Uber's online database; a stateless query engine layer over stateful storage engine nodes on MySQL.
- CacheFront: Redis cache built into Docstore's query layer, with TTLs up to 24 hours and hit rates above 99.9%.
- Big-data storage details are outside these posts and not covered here.
How does Uber monitor its systems?
- CacheFront includes a Cache Inspector that measures how stale cached data is (2025).
- Deploys are tracked across 100,000 deployments and 1.5 million pod launches per day.
- 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
- Create one VPC with CIDR
10.0.0.0/16in the Mumbai region (ap-south-1). - Use two Availability Zones (A and B), so one AZ failing does not stop the app.
- In each AZ make three subnets: public (load balancer, NAT gateway), private app (your code) and private data (databases, cache).
- 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. - Private app route table:
0.0.0.0/0 → NAT gateway, so servers can download updates but nobody can connect in from the internet. - 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
- ALB with WebSockets.
- Services on EKS, grouped by domain.
- Trip events through SQS or Kinesis.
3. Storage and databases
- ElastiCache for Redis with geo commands for nearby drivers.
- DynamoDB for live trip state.
- Aurora for accounts and trips; S3 for documents.
4. Monitoring
- CloudWatch alarms on matching time.
- X-Ray traces between services.
Request flow diagram
Press Play. The numbered list below the diagram lights up with each step.
- You open SawariGo. Route 53 answers.
- Map tiles and assets via CloudFront.
- From S3.
- API calls through the internet gateway.
- The ALB forwards to a pod.
- The ride API finds drivers.
- Nearby drivers from ElastiCache.
- Trip saved in DynamoDB and Aurora.
- Trip event to SQS.
- CloudWatch watches.
- Driver on the way.
Uber versus our AWS design
| Part | Uber (public info) | Our AWS design |
|---|---|---|
| Hosting | Own DCs + Oracle Cloud + Google Cloud | AWS |
| Services | ~4,000 in domains | A few services on EKS |
| Containers | Kubernetes, 50+ clusters | EKS |
| Database | Docstore on MySQL | Aurora, DynamoDB |
| Cache | CacheFront (Redis) | ElastiCache |
| Monitoring | Not detailed here | CloudWatch, X-Ray |
Quick quiz: check what you learned
What did Uber migrate from in 2024?
- Apache Mesos
- AWS Lambda
- Windows Server
- Mainframes
Show answer
A. Uber moved stateless services from Mesos to Kubernetes.
Which clouds does Uber name in 2025?
- Only AWS
- Oracle Cloud and Google Cloud
- Azure only
- None
Show answer
B. Uber runs on-prem plus Oracle Cloud and Google Cloud.
What is CacheFront?
- A front-end app
- A payment tool
- A Redis cache inside Docstore
- A CDN
Show answer
C. CacheFront serves 150M+ reads per second.
What does DOMA stand for?
- Data On My App
- Direct Order Map Access
- Driver Online Management API
- Domain-Oriented Microservice Architecture
Show answer
D. Uber's 2020 design for grouping services.
Learn it properly
Build the AWS parts yourself with these free guides and lessons:
- How to create a custom VPC with subnets, internet gateway and route tables
- Public vs private subnet in AWS · 3-tier architecture project on AWS
- How to launch an EC2 instance · Install the CloudWatch agent on EC2
- AWS course: What is a VPC? Default VPC vs custom VPC
- Related architectures: LinkedIn Architecture Explained: Kafka, FishDB, Rest.li, LLM Feed · Pinterest Architecture Explained: AWS, PinCompute on EKS, MySQL · Instagram Architecture Explained: Django, PostgreSQL, Cassandra · Netflix Architecture Explained: AWS, Microservices, Open Connect
- All famous app architectures explained