Design a Proximity Service/Yelp
Learn how to design a proximity service like Yelp.
What is Yelp?
Yelp is a one-stop platform for consumers to discover, connect, and transact with local businesses. Users can easily join a waitlist, make a reservation, schedule an appointment, or purchase goods. Yelp also provides information, photos, and reviews about local businesses.
Requirements
Let’s identify our system’s requirements.
Functional requirements
The functional requirements of our system are below:
-
User accounts: Users will have accounts where they’re able to perform different functionalities, like log in, log out, add, delete, and update.
Note: There can be two types of users: business owners who can add their places on the platform and other users who can search, view, and rate a location.
-
Search: The users should be able to search for nearby places or places of interest based on their GPS location (longitude/latitude) and/or their name.
-
Feedback: The users should be able to add a review about a place. The review can consist of images, text, and a rating.
Non-functional requirements
The non-functional requirements of our systems are:
High availability: The system should be highly available to the users.
Scalability: The system should be able to scale up and down, depending on the number of requests. The number of requests can vary depending on the time and number of days. For example, there are usually more searches made at lunchtime than at midnight. Similarly, during tourist season, our system will receive more requests as compared to in other months of the year.
Consistency: The system should be consistent for the users. All the users should have a consistent view of the data regarding places, reviews, and images.
Performance: Upon searching, the system should respond with suggestions with minimal latency.
Building blocks we will use
The design process of Yelp utilizes many building blocks that have already been discussed in the initial chapters of the course. We’ll consider the following concepts while designing Yelp:
Caching: We’ll use the cache to store information about popular places.
Load balancer: We’ll use the load ...