User should be able to:
GET /GetMovieDetail/api/v0/{movie_id}
GET /GetListOfMovie/api/v0/
GET /GetTheaterDetail/api/v0/{theater_id}
Request:
Response:
GET /GetAvailableSeat/api/v0/{movie_id}/{theater_id}
Request:
Response:
POST /HoldSeat/api/v0/{movie_id}
Request:
Response
POST /SubmitPayment/api/v0/{event_id}
Request:
Response
Movie_tbl:
Theater_tbl:
Theater_room_tbl:
Available_seat:
Theater_Movie_relation:
user_info_tbl:
Available_seat_elastic_Cache: Hold the status of entries in Available_seat table
Client:
API Gateway:
Load Balancer:
Booking Request SQS:
Booking Request Dead-letter-queue DLQ:
Async workflow:
Locking:
TaskScheduler
Payment:
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?