Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: 데이터베이스 락을 통해 중복 참여 방지 #667

Closed
wants to merge 9 commits into from

Conversation

helenason
Copy link
Contributor

@helenason helenason commented Dec 18, 2024

📌 관련 이슈

close #664

✨ 작업 내용

목적

같은 사용자가 같은 공모에 중복 참여 가능한 상황을 해결하기 위함.

해결

동시성 이슈 해결 과정은 제 블로그에 정리해두었어요. 자세한 내용이 궁금하시면 읽어주시면 됩니다! 조회수 늘리기는 덤 ㅎㅎ

요약해서 이야기하자면, 총 네 가지 방법을 떠올렸고 그 중 두 가지 방법 낙관적 잠금과 비관적 쓰기 잠금을 적용할 수 있었어요. 저는 비관적 쓰기 잠금을 걸기로 결정했습니다.

먼저, 참여하기 API는 동시성 이슈 발생률이 낮은 편이기 때문에 속도 테스트를 해보았을 때 낙관적 잠금과 비관적 잠금의 차이가 없었어요. 그래서 성능 측면은 고려하지 않았고, 불필요하게 쿼리가 발생하는 낙관적 잠금의 단점을 피하기 위해 비관적 쓰기 잠금을 선택하도록 하였습니다! 블로그에는 언급하지 않았지만, 낙관적 잠금을 선택할 경우 적절한 예외 처리에 대한 고민이 길어지기도 했어요.

📚 기타

@helenason helenason self-assigned this Dec 18, 2024
@masonkimseoul masonkimseoul changed the base branch from chongdae to develop-temp December 19, 2024 11:27
@masonkimseoul masonkimseoul changed the base branch from develop-temp to chongdae December 19, 2024 11:27
@fromitive fromitive changed the base branch from chongdae to develop December 19, 2024 11:36
@fromitive fromitive deleted the branch develop December 19, 2024 11:49
@fromitive fromitive closed this Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

✨ 데이터베이스 락을 통해 중복 참여 방지
2 participants