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

[No-jira] 낙관락과 Spring Retry를 통한 리뷰 좋아요 동시성 제어 #208

Merged
merged 8 commits into from
Nov 21, 2024

Conversation

pminsung12
Copy link
Collaborator

📌 개요 (필수)

  • 리뷰 좋아요 기능에 낙관락 적용

🔨 작업 사항 (필수)

  • 레디스 다운되면서 분산락이 사라졌는데, 이를 낙관락으로 대체
  • 롤백 시 재시도 로직은 spring retry 프레임워크 사용

💻 실행 화면 (필수)

image

@pminsung12 pminsung12 added ✨ Feature 기능 개발 ❌ do not merge 아직 merge하면 안되는 상태 labels Nov 20, 2024
@pminsung12 pminsung12 self-assigned this Nov 20, 2024
Copy link

Test Results

53 tests  +1   53 ✅ +1   2s ⏱️ -1s
18 suites +1    0 💤 ±0 
18 files   +1    0 ❌ ±0 

Results for commit c49fd0e. ± Comparison against base commit 98a3998.

@pminsung12 pminsung12 removed the ❌ do not merge 아직 merge하면 안되는 상태 label Nov 21, 2024
@pminsung12 pminsung12 merged commit fc9c06d into main Nov 21, 2024
5 checks passed
@pminsung12 pminsung12 deleted the no-jira-optimistic-lock branch November 21, 2024 01:28
@wjdwnsdnjs13
Copy link
Member

여러가지 중에서 낙관적 락을 선택한 이유를 물어봐도 될까??

@pminsung12
Copy link
Collaborator Author

@wjdwnsdnjs13

  1. 레디스 분산락 -> 분산환경에 적합, 레디스 비용 이슈
  2. 낙관락 -> 동시성 문제가 자주 일어나지 않는 이슈에 적합, 재시도 로직 구현해야함.
  3. 비관락 -> 동시성 문제가 자주 일어나는 이슈에 적합, 구현 쉬움

그래서 실제로 고려한 건 2,3 정도인데, 우리 좋아요 기능 자체가 동시성 이슈가 생길 가능성이 정말 적다고 생각했고, 좋아요 업데이트 할 때마다 likescount 읽어올 때 트랜잭션 안에서 레코드에 락 자체를 걸어버리면 다른 트랜잭션에서 리뷰 조회할 때도 기다려야하니까 성능상 영향이 생길 것 같아서 최종적으로 2번으로 결정했엉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants