1.0. 예약하기 선택
2.0. 반환받은 예약가능 시간 리스트 중 하나 선택 → 예약선점 API (✅ 완료) 호출
앞서 선택한 예약정보 기반 (식당, 날짜, 예약시간, 좌석)
검증 (동시접속 문제 발생 가능 → 2차 때 해결)
2.1. “예약 불가능하다”
2.2. “예약 가능하다” → 선점
3.0. 결제 창으로 버튼 클릭 후
3.1. “결제 실패 + 뒤로 가기 + 타임아웃”
예약선점취소 API 호출
예약정보 상태 변경
IN_PROGRESS → CANCELED/FAILED
예약가능 좌석 수 + 1
3.2. “결제 성공”
예약완료 API 호출
예약정보 선점상태 검증
예약정보 상태 변경
IN_PROGRESS → COMPLETE
예약 취소하기 버튼 클릭 시, 예약취소 API 호출
[Reservation] 테이블의 예약정보 상태 변경
COMPLETE → CANCELED
예약 취소의 합리성 검증 (티켓 반환여부 결정) → 연, 월, 일까지 비교 00시 기준
LocalDateTime → LocalDate → 내부 메서드로 비교
예약일 - 검증시점 < 1 Day
예약일 - 검증시점 ≥ 1 Day
빈자리 알림 전송
방법 1. 예약취소 API 내, 빈자리 알림전송 기능 포함
기능 분리가 안되고, 취소 이벤트에 오랜 시간이 걸릴 것으로 예상
⭐ 방법 2. 예약취소 API 와 빈자리 알림전송 API 분리
기능 분리가 가능, 취소와 알림 전송을 구분
캘린더에서 날짜/ 좌석 선택 시, 선점 API 호출
초과 예약 문제
동시에 여러 요청이 처리되면서 좌석 수가 0 이하로 내려가거나 이미 없는 좌석이 예약되는 경우.
데드락(Deadlock)
여러 사용자가 동시에 동일한 좌석 데이터를 수정하려고 하면 교착 상태가 발생할 수 있음.
응답 시간 지연
과도한 트래픽으로 인해 데이터베이스나 애플리케이션의 응답 시간이 늘어나는 경우.