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

[fix] 중복 회원가입 동시성 문제 해결 #157

Merged
merged 7 commits into from
Apr 10, 2024
Merged

Conversation

SunwoongH
Copy link
Member

Related Issue 📌

Description ✔️

중복 회원가입 동시성 문제

회원가입 비즈니스 로직에 디스코드 웹훅 기능을 추가한 후 처리 시간이 길어져 동시 요청 시 중복 회원가입 되는 문제점이 발생했습니다.
즉, 회원가입 로직의 처리 시간이 증가하여 특정 사용자가 회원가입 버튼을 클릭하고 대략 1초 정도의 딜레이 시간이 생기게 되었고 해당 딜레이 시간 동안 버튼을 연속으로 클릭 시 중복으로 회원가입 처리 되었습니다.

해결방안

회원가입 로직을 임계 영역으로 두고 race condition이 발생하지 않도록 락을 활용하여 문제를 해결할 수 있었습니다.
문제를 해결하기 위해 고민했던 락은 Pessimistic Lock, Optimistic Lock, Lettuce Setnx Lock 세 가지였습니다.
저희 서비스는 refresh token 저장 용도로 레디스를 사용 중이기 때문에 추가적인 인프라 구축 비용이 들지 않는점 그리고 DB 접근보다 레디스 접근이 조금 더 높은 성능을 가져올 수 있어 사용자의 대기 시간을 최대한 줄일 수 있다고 생각되어 Lettuce Setnx Lock을 활용하였습니다. 또한 락을 걸고 해제하는 작업을 위해 파사드 패턴을 적용하였습니다.
동일한 사용자의 약 20개 회원가입 동시 요청에 대한 테스트 코드를 작성하였습니다.

Copy link
Member

@gardening-y gardening-y left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pr 내용 넘 좋네요!!! 수고하셨습니다!

@SunwoongH SunwoongH merged commit 064c566 into develop Apr 10, 2024
1 check passed
@SunwoongH SunwoongH deleted the feature/156 branch July 11, 2024 04:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[fix] 중복 회원가입 동시성 문제 해결
2 participants