저번 포스팅에서 해결한 데드락 문제에 이어서 이번에는 동시성 문제를 해결해보겠습니다. 1. 투표 참여 기능 설명투표는 최대 1000명까지의 참여 인원 수를 설정할 수 있으며, 설정된 참여 인원 수가 모두 차면 투표는 즉시 종료됩니다. 회원은 투표 아이템 중 하나를 선택하여 투표에 참여할 수 있습니다. 투표 도메인은 votes(투표) 테이블과 voters(투표자) 테이블이 있습니다. 2. 문제 상황투표 참여 기능의 성능 테스트 중 🚨 동시성 이슈가 발생했습니다. 테스트 조건대상 투표 ID: 1번설정된 제한 인원: 1000명동시 참여 사용자 수: 1010명 테스트 결과기대했던 1000명의 투표자 대신, 실제로는 1009명의 투표자가 등록되었습니다. 동시성 이슈가 발생한 것입니다. 😱 3. 동시성이 발생..
투표 참여 기능 설명투표는 최대 1000명까지의 참여 인원 수를 설정할 수 있으며, 설정된 참여 인원 수가 모두 차면 투표는 즉시 종료됩니다. 회원은 투표 아이템 중 하나를 선택하여 투표에 참여할 수 있습니다. 투표 도메인에는 votes(투표) 테이블과 voters(투표자) 테이블이 있으며, 이 두 테이블은 1:N 관계를 가집니다. voters(투표자) 테이블에서 votes(투표) 테이블의 기본키를 외래키로 사용합니다. 투표 참여 기능에 사용되는 코드는 아래와 같습니다. Vote 엔티티와 Voter 엔티티는 양방향 매핑을 통해 연결됩니다.VoteManager.participate()@Transactionalpublic void participate( final Vote vote, final Long me..