Base Url: api/v1
End points:
MySQL - Relational Database
Client App -> Load Balancer -> Booking Service
-> Invoice Service
-> Payment Engine Service
-> Notification Service
-> Redis Cache for Parking & Entries and exists -> can be fetched also from read replica
-> available spaces are pushed into elastic search ->
-> if a space is released or booked, it can be re indexed in real time too
-> Use Scheduler to generate invoices or notification services
-
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?