-
We need to build a backend feature for an airline company. our end-user is going to be someone who wants to book flights and query about flights, so we need a robust system to actually help them give the best experience possible.
-
This Doc is going to solely focus on Backend Part. We want to prepare the whole backend keeping in the fact in mind that code-base should be easily maintainable as much as possible.
- A user should be able to search for flights from one place to another.
- User should be able to mention the
src
anddest
details. - User should be able to select the date of journey. {V2 -> multicity and round trip implementation}
- User should be able to select the class of the flights. (Non-mandatory, have some default value)
- User should be able to select the number of seats. (Non-mandatory, have some default value)
- List down the flights based on the above data.
- The best available flights should be shown based on price and least journey time.
- Need to support pagination so that we can list chunk of flights at one point of time.
- Filter of flights should be supported based on Price, Departure Time, Arrival time, Journey time, etc. {V2 -> some more filters}
- User should be able to mention the
- A user should be able to book a flight considering that user is reisterred on the platform.
- Excess luggage addition feature should be supported.
- Tracking of the flight prices should be possible; user should be notified for any price drops or any delays. {V2 -> some more notification service}
- For booking, the user has to make a payment.
(dummy)
- User should be able to list their previous and upcoming flights.
- User should be able to download their boarding pass if they have done
Web Check-in
. Web Check-in
should be supported.- {V2 -> Seat Selection feature}
- Notification via email for
Web check-in
. - Reqview system for users iff they have booked the flight.
- Star based review system
- Listing of flights should involve review display.
- User should be able to authenticate to our system using email and password.
- Cancellation of a flight should be supported and cancellation returns (dummy).
- While making a booking, a persone can reserve more than one seat with one login id.
- We can expect that we are going to have more number of flight searches than flight bookings.
- The system needs to be accurate in terms of booking.(No Over booking)
- Expect that we will be having approx 1,00,000 total users, 5,00,000 bookings might happen in one quarter.
- So in one day we can expect 10,000 bookings.
- System should be capable of scaling up to atleast 3x the current estimated traffic.
- The system should handle realtime updates to flight prices, before user makes the final booking.
- Concurrency should be handled, using RDBMS should be the good solution.
- Storage Estimations:
- For upcoming 5 years, 80,00,000 bookings, 2,00,000 users.
- Considering all the users records and booking records take 10 MB of data, then overall 10 TB of memory should be fine for out initial pilot run.
- Traffic estimates: If we consider 30:1 as the search:booking ratio, then max we can expect 1,50,000 search queries a day. (2 queries/sec)
URL: https://github.com/omkarharade/Authentication-Service-AirlineTicketBooking.git
URL: https://github.com/omkarharade/FlightsAndSearchService-AirlineTicketBooking.git
URL: https://github.com/omkarharade/BookingService-AirlineTicketBooking.git
URL: https://github.com/omkarharade/ReminderService-AirlineTicketBooking.git
URL: https://github.com/omkarharade/APIGateway-AirlineTicketBooking.git