System Design: Uber
Learn about the basics of designing an Uber service.
We'll cover the following
What is Uber?#
Uber is an application that provides ride-hailing services to its users. Anyone who needs a ride can register and book a vehicle to travel from source to destination. Anyone who has a vehicle can register as a driver and take riders to their destination. Drivers and riders can communicate through the Uber app on their smartphones.
1 of 7
2 of 7
3 of 7
4 of 7
5 of 7
6 of 7
7 of 7
The illustration below shows the number of active users of Uber from the start of 2017 to 2020 (source: Statista):
How will we design Uber?#
There are many unanswered questions regarding Uber. How does it work? How do drivers connect with riders? These are only two of many. This chapter will design a system like Uber and find the answer to such questions.
We’ve divided the design of Uber into six sections:
- Requirements: This lesson will describe the functional and non-functional requirements of a system like Uber. We’ll also estimate the requirements of multiple aspects of Uber, such as storage, bandwidth, and the computation resources.
- High-level Design: We’ll discuss the high-level design of Uber in this lesson. In addition, we’ll also briefly explain the API design of the Uber service.
- Detailed Design: We’ll explore the detailed design of Uber in this lesson. Moreover, we will also discuss the working of different components used in designing Uber.
- Payment Service and Fraud Detection: We’ll learn how the payment system works in Uber design. Moreover, we’ll also discuss how we can catch different frauds related to payments in Uber-like systems.
- Evaluation: This lesson will explain how Uber can fulfill all the non-functional requirements through the proposed design.
- Quiz: We’ll reinforce major concepts of Uber design via a quiz.
Let’s go over the requirements for designing a system like Uber in the next lesson.