피드로 돌아가기
Dev.toDatabase
원문 읽기
Unique Constraint와 Locking 전략을 통한 좌석 중복 예약 방지 설계
How Does Amazon Stop Two People from Booking the Same Seat?
AI 요약
Context
동시성 제어가 없는 환경에서 다수 사용자가 단일 좌석에 접근할 때 발생하는 Race Condition 문제 분석. 단순 요청 처리 방식으로는 데이터 정합성 훼손 및 중복 예약 발생 위험 상존.
Technical Solution
- Pessimistic Lock 기반의 임시 점유 구조 설계를 통한 10분간의 전용 세션 확보
- Database Unique Constraint 적용으로 물리적 계층에서 중복 예약 레코드 생성 원천 차단
- 요청 큐(Queue) 도입을 통한 First-Come-First-Served 방식의 순차적 처리 프로세스 구축
- Optimistic Lock 전략을 활용한 저장 시점의 최종 승자 결정 메커니즘 구현
- 결제 미완료 시 Lock 만료 및 가용 상태 복구로 리소스 회수 최적화
실천 포인트
1. 동시성 제어가 필요한 도메인에서 DB Unique Constraint를 최후의 방어선으로 설정했는지 검토
2. 비즈니스 요구사항에 따라 Pessimistic vs Optimistic Lock 중 적절한 격리 수준 선택
3. 대량 트래픽 유입 시 시스템 부하 분산을 위한 Message Queue 도입 고려