서론

저희는 티케팅 시스템에서 발생할 수 있는 동시성 문제를 해결하기 위해 다양한 해결책들을 찾아보았고,

아래의 세 가지 방식을 통한 동시성 제어 방식을 구현하였습니다.

일반적으로 퍼져있는 사실은 “경합이 강하지 않은 상황에서는 낙관적 락이 유리하다” 입니다.

하지만 과연 그럴까요?

“경합이 강하지 않은” 이라는 표현은 어떤 기준치를 가진 걸까요?

저희는 직접 테스트 시나리오를 작성하여 상황별로 어떤 락 방식이 동시성 제어에 유리한지 직접 실험해보고, 결과를 분석해보기로 하였습니다.

본론

시나리오를 세분화하기 위해서 티켓팅이 이루어지는 상황에 대한 변수를 찾아보기로 하였습니다.

공통 요인

가장 먼저 공통적인 변수로 티케팅을 시도하는 인원의 수남아있는 티켓 매수 두가지를 선정하였습니다.

락 종류별 변수

낙관적 락

낙관적 락을 사용한 동시성 문제 해결 방법의 핵심은 VERSION 칼럼의 불일치에 대해서 발생된 예외를 개발자가 직접 핸들링하는것입니다.

일반적으로 try - catch 문을 통한 예외 처리를 통해서 재시도를 요청하는 방식으로 구현됩니다.