System Design: Uber
Define the core functionality and user roles within a large-scale ride-hailing service like Uber. Identify and articulate the key functional and non-functional requirements via an assessment.
We'll cover the following...
What is Uber?
Uber is a ride-hailing application that connects riders with drivers. Riders register to book vehicles for travel, while drivers register to fulfill these requests. The app facilitates real-time communication and coordination between parties via their smartphones.
The illustration below displays the growth of active Uber users from 2017 to 2020 (Source: Statista):
How will we design Uber?
Designing a system like Uber involves answering critical questions about how drivers connect with riders and how the platform scales. This chapter provides a comprehensive design solution.
We divide the design process into six sections:
Requirements: Define functional and non-functional requirements, including estimates for storage, bandwidth, and compute resources.
High-level design: Outline the system architecture and API design.
Detailed design: Explore the internal workings of specific components and their interactions.
Payment service and fraud detection: Analyze payment workflows and fraud prevention mechanisms.
Evaluation: Assess how the proposed design satisfies the non-functional requirements.
Quiz: Test your knowledge of the design concepts.
Let’s start by defining the requirements in the next lesson.