When we want to design something, there are multiple things that needs to be considered.
- Use case: How many users will be using it?
- Traffic: What is the estimated traffic?
- Database – SQL/NoSQL
Primary design goals:
- Highly concurrent
- Database ACID compliant
- Distributed message queue to push notifications
We need following things when we think about a online booking system software:
- User Interface
- Database
- Caching
- Logging
- Load balancing
- Payment API
- Notifications
Thinking in terms of Objects:
- Movie
- City
- Theatre
- Show
- User
- Booking
- Seat
What does these objects consist of?
- Movie : MovieID ,Name, Description
- City: CityID, CityName
- Theatre: TheatreID, Name, Address, CityID
- Show: ShowID,TheatreID, CityID, MovieID, Date, Timing
- User: UserID, Name, Email, Phone
- Booking: BookingID, UserID, ShowID, Amount, Date
- Seat: SeatID, BookingID, SeatStatus
Popular online booking system: Book My Show.