Skip to Content
Nextra 4.0 is released 🎉
DocumentationHotel Reservation SystemUnderstand the Problem and Establish Design Scope

āĻšā§‹āĻŸā§‡āϞ āϰāĻŋāϜāĻžāĻ°ā§āϭ⧇āĻļāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āφāĻŽāϰāĻž Marriott International-āĻāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āĻšā§‹āĻŸā§‡āϞ āĻšā§‡āχāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻšā§‹āĻŸā§‡āϞ āϰāĻŋāϜāĻžāĻ°ā§āϭ⧇āĻļāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻŦā§‹āĨ¤ āĻāĻ–āĻžāύ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻĄāĻŋāϜāĻžāχāύ āĻāĻŦāĻ‚ āĻŸā§‡āĻ•āύāĻŋāĻ•āϗ⧁āϞ⧋ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦ⧁āĻ•āĻŋāĻ‚-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āĻĒā§āϰāĻļā§āύ⧇āĻ“ āĻĒā§āϰāϝ⧋āĻœā§āϝ, āϝ⧇āĻŽāύ:

  • Airbnb āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž
  • āĻĢā§āϞāĻžāχāϟ āϰāĻŋāϜāĻžāĻ°ā§āϭ⧇āĻļāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž
  • āĻŽā§āĻ­āĻŋ āϟāĻŋāĻ•āĻŋāϟ āĻŦ⧁āĻ•āĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž

āĻ¸ā§āĻŸā§‡āĻĒ ā§§ - āϏāĻŽāĻ¸ā§āϝāĻž āĻŦā§‹āĻāĻž āĻāĻŦāĻ‚ āĻĄāĻŋāϜāĻžāχāύ āĻ¸ā§āϕ⧋āĻĒ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ

āĻšā§‹āĻŸā§‡āϞ āϰāĻŋāϜāĻžāĻ°ā§āϭ⧇āĻļāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻ•āϟāĻŋ āϜāϟāĻŋāϞ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ, āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāϏāĻžāϰ āϚāĻžāĻšāĻŋāĻĻāĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāϰ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟāϗ⧁āϞ⧋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĄāĻŋāϜāĻžāχāύ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ⧇āϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āĻ•āĻŋāϛ⧁ āĻ•ā§āĻ˛ā§āϝāĻžāϰāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāĻļā§āύ āĻ•āϰāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤


āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻ¸ā§āϕ⧇āϞ āĻ•āϤāϟāĻž āĻšāĻŦ⧇?
āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āϧāϰ⧁āύ āφāĻŽāϰāĻž āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻ›āĻŋ āϝ⧇āĻ–āĻžāύ⧇ ā§Ģ,ā§Ļā§Ļā§ĻāϟāĻŋ āĻšā§‹āĻŸā§‡āϞ āĻāĻŦāĻ‚ āĻŽā§‹āϟ ā§§ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ āϰ⧁āĻŽ āφāϛ⧇āĨ¤

āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāϰāϰāĻž āĻ•āĻŋ āĻŦ⧁āĻ•āĻŋāĻ‚ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒ⧇āĻŽā§‡āĻ¨ā§āϟ āĻ•āϰāĻŦ⧇ āύāĻžāĻ•āĻŋ āĻšā§‹āĻŸā§‡āϞ⧇ āĻ—āĻŋāϝāĻŧ⧇?
āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āϏāϰāϞāϤāĻžāϰ āϜāĻ¨ā§āϝ āϧāϰ⧁āύ āĻŦ⧁āĻ•āĻŋāĻ‚ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧāχ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒ⧇āĻŽā§‡āĻ¨ā§āϟ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤

āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāϰāϰāĻž āĻ•āĻŋ āĻļ⧁āϧ⧁ āĻšā§‹āĻŸā§‡āϞ⧇āϰ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻĨ⧇āϕ⧇ āĻŦ⧁āĻ• āĻ•āϰāĻŦ⧇? āĻĢā§‹āύ āĻ•āϞ āĻŦāĻž āĻ…āĻ¨ā§āϝ āĻŽāĻžāĻ§ā§āϝāĻŽ āϞāĻžāĻ—āĻŦ⧇ āĻ•āĻŋ?
āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āϧāϰ⧁āύ āĻŦ⧁āĻ•āĻŋāĻ‚ āĻļ⧁āϧ⧁ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒ āĻĨ⧇āϕ⧇ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤

āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāϰāϰāĻž āĻ•āĻŋ āĻŦ⧁āĻ•āĻŋāĻ‚ āĻŦāĻžāϤāĻŋāϞ (cancel) āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇?
āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āĻšā§āϝāĻžāρāĨ¤

āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āφāϰ āĻ•āĻŋ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇?
āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āĻšā§āϝāĻžāρ, āφāĻŽāϰāĻž ā§§ā§Ļ% overbooking āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āχāĨ¤ Overbooking āĻŽāĻžāύ⧇ āĻšāϞ⧋ āĻšā§‹āĻŸā§‡āϞ āϤāĻžāϰ āφāϏāϞ āϰ⧁āĻŽ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻŦ⧁āĻ•āĻŋāĻ‚ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻžāϰāĻŖ āĻ•āĻŋāϛ⧁ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāϰ āϏāĻžāϧāĻžāϰāĻŖāϤ cancel āĻ•āϰ⧇āĨ¤

āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āφāĻŽāĻŋ āϧāϰ⧇ āύāĻŋāĻšā§āĻ›āĻŋ room search āĻ¸ā§āϕ⧋āĻĒ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āφāĻŽāϰāĻž āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻŦā§‹:

  • āĻšā§‹āĻŸā§‡āϞ āĻĒ⧇āϜ āĻĻ⧇āĻ–āĻžāύ⧋
  • āϰ⧁āĻŽ āĻĄāĻŋāĻŸā§‡āχāϞ āĻĒ⧇āϜ āĻĻ⧇āĻ–āĻžāύ⧋
  • āϰ⧁āĻŽ āϰāĻŋāϜāĻžāĻ°ā§āĻ­ āĻ•āϰāĻž
  • āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒā§āϝāĻžāύ⧇āϞ (add/update/remove āĻšā§‹āĻŸā§‡āϞ āĻ“ āϰ⧁āĻŽ)
  • overbooking āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž

āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āĻ āĻŋāĻ• āφāϛ⧇āĨ¤

āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āφāϰ⧇āĻ•āϟāĻŋ āĻŦāĻŋāώāϝāĻŧ, āĻšā§‹āĻŸā§‡āϞ⧇āϰ āĻĻāĻžāĻŽ dynamicāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻšā§‹āĻŸā§‡āϞ āĻ•āϤāϟāĻž full āϤāĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϰ⧁āĻŽā§‡āϰ āĻĻāĻžāĻŽ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āφāϞāĻžāĻĻāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ•ā§āϝāĻžāĻ¨ā§āĻĄāĻŋāĻĄā§‡āϟ: āφāĻŽāĻŋ āĻāϟāĻž āĻŽāĻžāĻĨāĻžāϝāĻŧ āϰāĻžāĻ–āĻŦā§‹āĨ¤


āύāύ-āĻĢāĻžāĻ‚āĻļāύāĻžāϞ āϰāĻŋāϕ⧋āϝāĻŧāĻžāϰāĻŽā§‡āĻ¨ā§āϟāϏ

  • High concurrency support āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ (peak season āĻŦāĻž event āϏāĻŽāϝāĻŧ āĻ…āύ⧇āĻ• āĻŦ⧁āĻ•āĻŋāĻ‚)
  • Moderate latency acceptable (āĻ•āϝāĻŧ⧇āĻ• āϏ⧇āϕ⧇āĻ¨ā§āĻĄ delay āĻšāϞ⧇āĻ“ āϚāϞāĻŦ⧇)

āĻŦā§āϝāĻžāĻ•-āĻ…āĻĢ-āĻĻā§āϝ-āĻāύāϭ⧇āϞāĻĒ āĻāĻ¸ā§āϟāĻŋāĻŽā§‡āĻļāύ

  • āĻŽā§‹āϟ āĻšā§‹āĻŸā§‡āϞ: ā§Ģ,ā§Ļā§Ļā§Ļ
  • āĻŽā§‹āϟ āϰ⧁āĻŽ: ā§§ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ

āϧāϰāĻŋ:

  • ā§­ā§Ļ% āϰ⧁āĻŽ occupied
  • average stay = ā§Š āĻĻāĻŋāύ

āĻĻ⧈āύāĻŋāĻ• āϰāĻŋāϜāĻžāĻ°ā§āϭ⧇āĻļāύ:

(1,000,000 × 0.7) / 3 ≈ 233,333 ≈ ~240,000


āϰāĻŋāϜāĻžāĻ°ā§āϭ⧇āĻļāύ āĻĒā§āϰāϤāĻŋ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ (TPS):

240,000 / 100,000 seconds ≈ ~3 TPS

👉 āĻ…āĻ°ā§āĻĨāĻžā§Ž average reservation load āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āύāĻžāĨ¤


āĻĒ⧁āϰ⧋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ QPS āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āχāωāϜāĻžāϰ āĻĢā§āϞ⧋:

  1. āĻšā§‹āĻŸā§‡āϞ/āϰ⧁āĻŽ āĻĄāĻŋāĻŸā§‡āχāϞ āĻĒ⧇āϜ āĻĻ⧇āĻ–āĻž (query)
  2. āĻŦ⧁āĻ•āĻŋāĻ‚ āĻ•āύāĻĢāĻžāĻ°ā§āĻŽā§‡āĻļāύ āĻĒ⧇āϜ āĻĻ⧇āĻ–āĻž (query)
  3. āϰ⧁āĻŽ āĻŦ⧁āĻ• āĻ•āϰāĻž (transaction)

āϧāϰāĻŋ:

  • ā§§ā§Ļ% āχāωāϜāĻžāϰ āĻĒāϰ⧇āϰ āĻ¸ā§āĻŸā§‡āĻĒ⧇ āϝāĻžāϝāĻŧ
  • ⧝ā§Ļ% drop off āĻ•āϰ⧇
  • āϕ⧋āύ⧋ prefetching āύ⧇āχ

QPS āĻĢāĻžāύ⧇āϞ (Figure 1)

  • Reserve rooms (final): 3 QPS
  • Booking page: 30 QPS
  • Detail page: 300 QPS

āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ

āχāωāϜāĻžāϰ āϏāĻ‚āĻ–ā§āϝāĻž āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āĻ•āĻŽā§‡ āϝāĻžāϝāĻŧ, āϤāĻžāχ funnel pattern āϤ⧈āϰāĻŋ āĻšāϝāĻŧ—āĻļ⧁āϰ⧁āϤ⧇ āĻŦ⧇āĻļāĻŋ traffic, āĻļ⧇āώ⧇ āĻ•āĻŽ transactionāĨ¤