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: 후기 테이블의 투표 수 컬럼 추가로 인한 동시성 제어 로직 추가 #174

Merged
merged 3 commits into from
Aug 25, 2023

Conversation

Seongjun-Kwon
Copy link
Owner

관련 이슈

내용

  • 락을 걸지 여부
    • 투표 수가 실시간으로 정합성이 맞아야하는 것은 아님. 일정 주기로 투표 테이블에 있는 수를 count 해서 후기의 투표 수 컬럼에 반영해줘도 됨. 다만 후기의 수가 많아질수록 부담이 커지므로 락을 거는 방식으로 해결하기로 함.
  • 어떤 식으로 락을 걸 것인가?
    • synchronized, 비관적락, 낙관적락, 분산락 정도가 있음.
      • 비관적락
        • 투표 테이블에 쓰기 락이 걸림. 투표 생성 중에는 다른 트랜잭션에서 투표 테이블의 조회도 불가능하게 됨. 투표는 생성보다도 조회가 잦음. 성능적으로 이슈 있음.
      • 낙관적락
        • 투표 생성은 충돌이 자주 일어나지 않을 것이라 판단됨. 대규모 커뮤니티 실시간 인기글을 보아도 투표 수가 많아야 300개 정도임. 프론트 단에서 투표 생성 시 모달 창 단계를 추가한다면 더더욱 충돌이 줄어들 것임.
      • 결론
        • 현재 서버는 싱글 서버, 싱글 DB 라서 낙관적락으로도 충분함. 다만, 분산 서버, 분산 DB 환경임을 가정한다면 버전을 동기화해주는 추가적인 리소스가 필요함. synchronized 도 같은 이유로 배제하고 Redis 를 활용한 분산락을 선택함.

@Seongjun-Kwon Seongjun-Kwon self-assigned this Aug 25, 2023
@Seongjun-Kwon Seongjun-Kwon merged commit 01bcd93 into develop Aug 25, 2023
1 check passed
@Seongjun-Kwon Seongjun-Kwon deleted the fix/#172 branch August 25, 2023 16:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Fix: 후기 테이블의 투표 수 컬럼 추가로 인한 동시성 제어 로직 추가
1 participant