Requirements of Uber’s Design
Learn about the requirements to design an Uber service.
Requirements
Let’s start with the requirements for designing a system like Uber.
Functional requirements
The functional requirements of our system are as follows:
Update driver location: The driver is a moving entity, so the driver’s location should be automatically updated at regular intervals.
Find nearby drivers: The system should find and show the nearby available drivers to the rider.
Request a ride: A rider should be able to request a ride, after which the nearest driver should be notified about the rider’s requests.
Manage payments: At the start of the trip, the system must initiate the payment process and manage the payments.
Show driver estimated time of arrival (ETA): The rider should be able to see the estimated time of arrival of the driver.
Confirm pickup: Drivers should be able to confirm that they have picked up the rider.
Show trip updates: Once a driver and a rider accept a ride, they should be able to constantly see trip updates like ETA and current location until the trip finishes.
End the trip: The driver marks the journey complete upon reaching the destination, and they then become available for the next ride.
What if two drivers are at the same distance from the rider? How will we select the driver to whom we’ll send the request?