System Design Interview Volume 2 (6)
호텔 예약 시스템
- Airbnb system 설계
- 항공권 예약 system 설계
- 영화 ticket 예매 system 설계
1단계: 문제 이해 및 설계 범위 확정
아래 세부 사항은 가상 면접관과의 대화를 통해 문제를 이해하고, 설계 범위를 정의한 내용이다.
- 비기능 요구사항
- 높은 수준의 동시성 (concurrency): 성수기, 대규모 event 기간에는 일부 인기 hotel의 특정 객실을 예약하려는 고객이 많이 몰릴 수 있음
- 적절한 지연 시간: 사용자가 예약할 때 응답 시간이 빠르면 이상적이지만 예약 요청 처리에 몇 초 정도 소모되는 것은 괜찮음
- 개략적 규모 추정
- 총 5,000개 hotel, 100만 개의 객실 가정
- 평균적으로 객실의 70% 사용, 평균 투숙 기간은 3일로 가정
- TPS (Transactions Per Second)
- 일일 예약 건수 $=\frac{10^6\times0.7}{3}=233,333\simeq240,000$
- 초당 예약 건수 $=\frac{240,000}{10^5}\simeq3$
- QPS (Queries Per Second)
- Hotel/객실 상세 page: 사용자가 hotel/객실 정보 확인 (조회 발생)
- 예약 상세 정보 page: 사용자가 날짜, 투숙 인원, 결제 방법 등의 상세 정보를 예약 전 확인 (조회 발생)
- 객실 예약 page: 사용자가 ‘예약’ button을 눌러 객실 예약 (Transaction 발생)
- 대략 10%의 사용자가 다음 단계로 진행, 90%의 사용자는 이탈한다 가정
- $\therefore$ $3\ (TPS) * 10 * 10 = 300\ (QPS)$