[WealthTracker] Named Lock을 활용한 동시성 문제 해결
프로젝트/WelathTracker·2025. 7. 7.
1.배경WealthTracker에서는 사용자가 지출 내역을 입력할 때 카테고리를 선택하게 된다. 기본 카테고리는 납부, 식비, 교통, 오락, 쇼핑, 기타 등이며, ENUM으로 관리하고 있다.문제는 사용자가 새로운 카테고리를 추가할 때 발생했다. 기존 ENUM에 해당하지 않으면 customCategoryName이라는 컬럼에 값을 넣어 새로 등록하도록 구현했는데, 여러 사용자가 동시에 같은 이름의 새로운 카테고리를 등록하는 상황에서 동시성 이슈가 발생했다. 테스트 코드를 통해 확인된 동시성 문제ExecutorService를 이용하여 100개의 쓰레드를 동시에 실행해보았고 모든 스레드는 "test"라는 새로운 카테고리명을 등록하도록 설정했다. 테스팅 결과 10개의 카테고리 객체가 생성되는 현상이 발생했고, 이..