여러개의 스레드 또는 프로세스가 동일한 자원에 접근하거나 수정할 때 발생하는 문제
이번 아티클에서는 티케팅 시스템에서 여러 사용자가 한정된 수량에 대해 동시에 구매를 요청했을 때 발생할 수 있는 동시성 문제에 대해서 다루도록 하겠습니다.
<aside> 💡 글에서 언급되는 모든 코드는 https://github.com/Tiketeer/Tiketeer-BE 에서 원본을 확인하실 수 있습니다.
</aside>
사용자가 티켓을 사는 Use case는 다음과 같습니다.
실제 테스트 코드와 다이어그램을 통해서 설명해 보겠습니다
40명의 구매자가 총 20개 티켓에 대해서 동시에 구매 요청을 전송합니다.
기대되는 올바른 결과는 다음과 같습니다 :
다음과 같은 코드를 통해 테스트를 수행하였습니다.