Requirements verification
Let’s quickly check whether all of our functional and non-functional requirements are met with this design.
The following are the two functional requirements we had:
- A user should be able to search nearby restaurants, given their location.
- A user should be able to select a restaurant and place an order.
Both these are satisfied by the current design.
The following are the non-functional requirements:
- Availability: The system should be highly available.
The system is highly available since we will have all these services have multiple instances running, so even if one or a few go down, the system doesn’t go down and is still serving the traffic.
- Scalability: The system should be highly scalable (100M users) and be able to tolerate request spikes.
This is a horizontally scalable system with no bottlenecks.
- Latency: Read latency should be within 200 ms.
Latency will be < 200 ms since we will use quadtree...