Chapter 18. Designing a Hotel Reservation System
We love to travel and often use online hotel reservation systems such as Booking.com, agoda, and Airbnb to book our stays in advance. In this chapter, we’ll dive deep into the underlying design of reservation systems for hotel rooms (or any other type of place to stay—we’ll use the term property here). The reservation system should show listed properties in a particular area and allow users to book rooms for a specific period of time. When designing such systems, consider that there are a lot of edge cases the system should adhere to, such as how to handle double payments and the fact that the same room should not be bookable by multiple people for the same time frame. We’ll work on figuring out all such scenarios and finalizing the overall system architecture.
We’ll start the discussion with requirement clarifications and our expectations for the system, close on the design by breaking the overall booking system into multiple subsystems, and then conclude the discussion by identifying AWS services useful for deploying this type of system on the AWS cloud.
System Requirements
The most important requirement is quite simple: allow customers to book a room for their future stays. We’ll start with a few clarifications:
-
The system is responsible for onboarding a single hotel chain or any property onto the system to list the rooms. The system allows properties to onboard and add the rooms with amenities.
-
We need to determine who ...