TRUE) → 예매 대기(10분)(좌석 상태: FALSE) → 결제 완료(예매 확정)(좌석 상태: FALSE)FALSE) → 예매 취소(좌석 상태: TRUE)FALSE → TRUE)같은 좌석에 대해 동시에 여러 사용자가 예약 요청
결제 지연(10분)으로 인해 락 유지 시간이 길어질 수 있음
⇒ 락은 좌석 상태를 TRUE → FALSE로 전환하는 ‘순간’만 보호, 결제 대기 상태 유지는 별도의 비즈니스 로직(스케줄러)으로 관리
장점 : DB 차원에서 중복 예약을 원천 차단하기 때문에 안전성이 가장 높음
단점 : 트래픽 집중 시 대기 발생
<aside>
트래픽 집중 시나리오 예시
⇒ 결과가 이미 정해진 요청들까지 DB 커넥션과 트랜잭션을 점유하게 됨
</aside>
장점 : 비관적 락과 달리 대기열이 없고, 즉시 성공 또는 즉시 실패 처리가 가능함
단점 : 인기 좌석의 경우 update 충돌이 빈번하게 발생하여, DB write 트래픽과 트랜잭션 비용 증가
<aside>
장점 :
단점 : Redis 장애 발생 시 락 기능이 영향을 받을 수 있으므로, 이중화 구성이나 장애 대응 전략 필요
Redis 분산 락은 DB 진입 전 트래픽을 컷하기 위한 1차 필터로 사용 + 최종 데이터 무결성은 DB row 단위 비관적 락으로 보장