MSA 프로젝트- 소모임 동시성 문제

박경희·2023년 9월 30일
1

프로젝트

목록 보기
14/16

소모임 어플을 직접 사용하면서 경험햇던 오류에 대해 조원들과 이야기를 나눴다.
20명이 참석할 수 있는 일정에 30~40명이 동시에 참석을 누르니 21~ 22명 까지 참석이 되어버리는 것.
그래서 우리는 프로젝트를 진행하며 이 오류를 해결해 보기로 했다.

📷  동시성 문제 해결과정 화면

스케쥴 테이블에는 참석 가능 인원 300명에 정확히 300명이 참석한 것으로 보이나

실제 참석 테이블을 확인해보니 375명이 참석된 오버부킹 현상을 확인.

  1. 먼저 lock 방식으로 해결. 그 중 낙관적 락으로 해결해보았다.
  2. 이후 openfeign을 사용중이던 부분을 카프카로 바꾸면서 동시성 해결. 메시지 큐

동시성 문제 해결 후

위는 메시지 큐 방식으로 데이터를 삽입했을 때 동시성 문제가 해결됐음을 확인할 수 있다.
두개의 서버에서 동시다발적으로 100번대 id와 2000번대 memberId로 삽입을 하였고, 순서에 맞게 잘 삽임됨을 알 수 있다.
하지만 낙관적 락 방식은 130번 다음에 132번의 Id가 삽입되는 등의 형평성 문제가 발생한다.

형평성 문제란?
형평성 문제란 같은 시간에 들어온 두개의 스레드가 동시성 문제가 발생했다는 이유로 하나의 스레드는 큐의 맨 뒷부분으로 돌아가 요청이 제일 후 순위로 밀려나기 때문에, 수강신청의 경우 내가 빠르게 요청을 보냈지만 동시성이 발생했다는 이유로 맨 뒷순위로 밀려나 수강신청에 실패하게 될 수 있다는것이다.

1개의 댓글

comment-user-thumbnail
2023년 10월 9일

와 트래픽이 많아지면 동시성 문제가 발생할 수 있겠군요..! 인사이트 얻어갑니다!

답글 달기

관련 채용 정보