소모임 어플을 직접 사용하면서 경험햇던 오류에 대해 조원들과 이야기를 나눴다.
20명이 참석할 수 있는 일정에 30~40명이 동시에 참석을 누르니 21~ 22명 까지 참석이 되어버리는 것.
그래서 우리는 프로젝트를 진행하며 이 오류를 해결해 보기로 했다.
스케쥴 테이블에는 참석 가능 인원 300명에 정확히 300명이 참석한 것으로 보이나
실제 참석 테이블을 확인해보니 375명이 참석된 오버부킹 현상을 확인.
동시성 문제 해결 후
위는 메시지 큐 방식으로 데이터를 삽입했을 때 동시성 문제가 해결됐음을 확인할 수 있다.
두개의 서버에서 동시다발적으로 100번대 id와 2000번대 memberId로 삽입을 하였고, 순서에 맞게 잘 삽임됨을 알 수 있다.
하지만 낙관적 락 방식은 130번 다음에 132번의 Id가 삽입되는 등의 형평성 문제가 발생한다.
형평성 문제란?
형평성 문제란 같은 시간에 들어온 두개의 스레드가 동시성 문제가 발생했다는 이유로 하나의 스레드는 큐의 맨 뒷부분으로 돌아가 요청이 제일 후 순위로 밀려나기 때문에, 수강신청의 경우 내가 빠르게 요청을 보냈지만 동시성이 발생했다는 이유로 맨 뒷순위로 밀려나 수강신청에 실패하게 될 수 있다는것이다.
와 트래픽이 많아지면 동시성 문제가 발생할 수 있겠군요..! 인사이트 얻어갑니다!