예약 시스템에서 비관적락은 정말 필요했을까?
·
웹개발
최근 한 기업의 채용 과제전형에서 숙소 예약 시스템을 구현하면서, 동시성 제어 방식을 비관적 락에서 유니크 제약조건으로 바꾼 판단 과정을 정리한다. 결과와 무관하게, 이 판단이 어떤 근거로 이뤄졌고 어디서 놓쳤는지는 다시 짚어볼 가치가 있었다. 같은 자리를 두 사람이 동시에 예약하면 두 사용자가 동시에 같은 집, 같은 기간을 예약하려고 할 때 어떻게 막을 것인가가 가장 까다로운 지점이었다. 서버 입장에서는 "이 기간, 지금 비어있나?"를 확인하고 "예약 완료"로 바꾸는 그 찰나에, 다른 요청도 같은 질문을 던지고 있을 수 있다. 이를 제대로 처리하지 못하면 같은 기간에 두 건의 예약이 동시에 성립하는 정합성 문제가 발생한다. 이런 상황을 동시성(concurrency) 문제라고 부른다. RESERV..