POST - /api/v1/reservation
inputs:
outputs:
LIST - /api/v1/available_spaces
input:
output
GET - /api/v1/allotment
input:
output
POST - /api/v1/reservation/extend
input:
output
POST - /api/v1/notify
input:
output
Reservation Table
String User_id NOT NULL,
String Car_Registration, PRIMARY KEY
Number Contact number NOT NULL,
String Email NOT NULL,
String Allotment_id
Timestamp<tz> Reserved_at
Timestamp<tz> Reserved_until
Allotment table
String Allotment_id NOT NULL PRIMARY KEY,
String Status NOT NULL,
String Allotment_type NOT NULL,
Load Balancer: Act as an entry point to our service. This ensure we can scale and de-scale our service effectively
Cache: A list of reservations for a day. We invalidate the cache in 86400 seconds (1 day)
Parking Lot System: Our Service that supports Reservation APIs
Payment Service: An External service that manages client payments
Notification Service: Reads from the database and notifies for all reservations due to expire in 10 mins or less exactly once.
Database: State of our Service. Reserved, Empty
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...