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 : 그룹 요청 수락 동시성 문제 해결 , 그룹에 대한 인원정보 API 개발 #462

Merged
merged 14 commits into from
Jun 3, 2024

Conversation

GaBaljaintheroom
Copy link
Collaborator

작업 내용 (Content)

  • 그룹 요청 수락 30명 제약에 대해 redis 분산락을 적용
  • 분산락 테스트
  • 그룹에 대한 그룹원 정보 API 개발

링크 (Links)

기타 사항 (Etc)

  • 낙관적 락 적용 시 : 현재 Service에서 MemberGroup을 조회하지 않기에, 낙관적락을 사용할 수 없음

  • 비관적 락 적용 시 : MemberGroup 테이블에서 조건에 맞는 MemberGroup의 개수를 세는 조회 쿼리에 적용하면, 독점 Lock을 걸어야 하는데, 이는 해당 행에 읽기와 쓰기를 모두 막아버림. -> 다른 트랜잭션에서는 해당 행에 대한 읽기와 쓰기를 못하므로 부하가 심할 것으로 예상함. (그룹 요청 수락 관련 뿐만 아니라, 다른 비지니스 로직에서도 MemberGroup에 대한 읽기 쓰기 연산이 있기 때문)

  • 따라서 Redis 분산 락을 적용함 -> Lettuce와 Redisson 방식이 있는데, Lettuce는 개발자가 직접 구현을 해야 하고, Redisson은 Lock 인터페이스가 있음. Redis에 계속 요청을 보내서 확인하는 방식이라 Redis에 부하가 Redisson 방식보다 심함. 따라서 더 편하고 분산 락 관련 안전하게 구현 가능한 Redisson 방식으로 선택

  • 그룹원 정보 API는 쿼리가 간단한 JOIN문이라 테스트 안함

Merge 전 필요 작업 (Checklist before merge)

희망 리뷰 완료 일 (Expected due date)

@seokho-1116 seokho-1116 added the feat 새로운 기능 label Jun 1, 2024
@seokho-1116 seokho-1116 self-requested a review June 1, 2024 07:24
@seokho-1116 seokho-1116 merged commit 7b0ec2d into develop_back_core Jun 3, 2024
2 checks passed
@seokho-1116 seokho-1116 deleted the fix/group-B-#460 branch June 20, 2024 09:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 새로운 기능
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants