System Design of Uber App | Uber System Architecture (original) (raw)

Last Updated : 6 Apr, 2026

Getting hassle-free transportation services like Uber or Ola is easy for users, but building such large-scale applications is highly complex. These systems require robust architecture and coordination of multiple components to deliver reliable services worldwide.

1

Uber

1. System Requirements

This section outlines what the cab booking system should do and the qualities it must have.

1. Functional requirements

These are the core features the system must provide to users.

2. Non-Functional requirements

These define the performance, reliability, and scalability expectations of the system.

2. Capacity Estimation

Lets assume we have 5 million active users on our application with 200,000 drivers and on an average there are 1 million rides daily. If a user performs 5 actions on an average then we need to handle 5 million requests daily

3. Low-Level Design

We all are familiar with Uber services. A user can request a ride through the application and within a few minutes, a driver arrives nearby his/her location to take them to their destination.

Uber-System-Design-High-Level-Architecture

1. Challenges

One of the main tasks of Uber service is to match the rider with cabs which means we need two different services in our architecture i.e.

Uber has a Dispatch system (Dispatch optimization/DISCO) in its architecture to match supply with demand. This dispatch system uses mobile phones and it takes the responsibility to match the drivers with riders (supply to demand).

2. Working

DISCO must have these goals...

The dispatch system completely works on maps and location data/GPS, so the first thing which is important is to model our maps and location data.

3. Supply Service And Working

This service tracks all active cabs using geolocation and updates the system in real-time.

4. Demand Service And Working

This service handles rider requests and communicates user requirements to the supply side.

5. Rider-to-Driver Matching in the Dispatch System

This system matches riders with the best available drivers efficiently using map cells and sharding.

2

If we need to handle the traffic for the newly added city then we can increase the number of servers and allocate the responsibilities of newly added cities' cell IDs to these servers.

6. Scaling of Dispatch System

The dispatch system (including supply, demand, and web socket) is built on NodeJS. NodeJS is the asynchronous and event-based framework that allows you to send and receive messages through WebSockets whenever you want.

Uber uses an open-source _ringpop to make the application cooperative and scalable for heavy traffic. Ring pop has mainly three parts and it performs the below operation to scale the dispatch system.

7. Understanding Map Regions in Uber

Before launching a new operation in a new area, Uber onboarded the new region to the map technology stack. In this map region, we define various subregions labeled with grades A, B, AB, and C.

8. Map Construction in Uber

Uber uses a third-party map service provider to build the map in their application. Earlier Uber was using Mapbox services but later Uber switched to Google Maps API to track the location and calculate ETAs.

**1. Trace coverage

Trace coverage spot the missing road segments or incorrect road geometry.

**2. Preferred access (pick-up) point accuracy

We get the pickup point in our application when we book the cab in Uber. Pick-up points are a really important metric in Uber, especially for large venues such as airports, college campuses, stadiums, factories, or companies. We calculate the distance between the actual location and all the pickup and drop-off points used by drivers.

3

The process refines pickup and drop-off points in three steps: first identifying actual location pins, then calculating distances between them. Finally, it selects the closest points as the preferred pickup or drop-off locations for better accuracy.

9. Estimating Arrival Times (ETA)

ETA is an extremely important metric in Uber because it directly impacts ride-matching and earnings.

It may be possible that one of the cabs which are about to finish the ride is closer to the demand than the cab which is far away from the user. So many Uber cars on the road send GPS locations every 4 seconds, so to predict traffic we can use the driver's app’s GPS location data.

Once the data structure is decided we can find the best route using Dijkstra’s search algorithm which is one of the best modern routing algorithms today. For faster performance, we also need to use OSRM (Open Source Routing Machine) which is based on contraction hierarchies.

4. High-Level Design

This section provides an overview of the system architecture, showing how components interact to fulfill user requirements.

4

HLD

1. Data model design

This section defines how data is structured and stored for efficient access and scalability.

5

Data Model Design

2. Databases

Uber had to consider some of the requirements for the database for a better customer experience. These requirements are...

Earlier Uber was using the RDBMS PostgreSQL database but due to scalability issues uber switched to various databases. Uber uses a NoSQL database (schemaless) built on top of the MySQL database.

3. Services

This section explains the key services that make up the system and their responsibilities.

4. Analytics

To optimize the system, minimize the cost of the operation and for better customer experience uber does log collection and analysis. Uber uses different tools and frameworks for analytics. For log analysis, Uber uses multiple Kafka clusters.

Kafka takes historical data along with real-time data. Data is archived into Hadoop before it expires from Kafka. The data is also indexed into an Elastic search stack for searching and visualizations. Elastic search does some log analysis using Kibana/Graphana. Some of the analyses performed by Uber using different tools and frameworks are...

5. Handling The Data center Failure

Datacenter failure doesn't happen very often but Uber still maintains a backup data center to run the trip smoothly. This data center includes all the components but Uber never copies the existing data into the backup data center.

**Then how does Uber tackle the data center failure?

5. Internal Team - Testing Suggestions

To ensure Uber’s complex system runs smoothly and reliably, the internal team must perform thorough testing across multiple areas:

1. Functional Testing

This ensures that all user-facing features and workflows function correctly.

2. Load and Performance Testing

This measures how the system performs under high traffic and stress conditions.

3. Integration Testing

This validates that different services communicate and work together correctly.

4. Fault Tolerance and Recovery Testing

This ensures the system can handle failures and recover gracefully.

5. Geospatial and Dispatch Logic Testing

This verifies the accuracy and efficiency of location-based algorithms and dispatch logic.

6. Security Testing

This ensures that user data and communications are protected from unauthorized access.

7. Analytics Pipeline Testing

This verifies that data processing and reporting pipelines work correctly.

8. Scalability Testing

This ensures the system can grow and handle increasing loads efficiently.