Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📌 관련 이슈
close #664
✨ 작업 내용
목적
같은 사용자가 같은 공모에 중복 참여 가능한 상황을 해결하기 위함.
해결
동시성 이슈 해결 과정은 제 블로그에 정리해두었어요. 자세한 내용이 궁금하시면 읽어주시면 됩니다! 조회수 늘리기는 덤 ㅎㅎ
요약해서 이야기하자면, 총 네 가지 방법을 떠올렸고 그 중 두 가지 방법 낙관적 잠금과 비관적 쓰기 잠금을 적용할 수 있었어요. 저는 비관적 쓰기 잠금을 걸기로 결정했습니다.
먼저, 참여하기 API는 동시성 이슈 발생률이 낮은 편이기 때문에 속도 테스트를 해보았을 때 낙관적 잠금과 비관적 잠금의 차이가 없었어요. 그래서 성능 측면은 고려하지 않았고, 불필요하게 쿼리가 발생하는 낙관적 잠금의 단점을 피하기 위해 비관적 쓰기 잠금을 선택하도록 하였습니다! 블로그에는 언급하지 않았지만, 낙관적 잠금을 선택할 경우 적절한 예외 처리에 대한 고민이 길어지기도 했어요.
📚 기타