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

[BSVR-217] 리뷰 공감에 분산락 추가 #166

Merged
merged 27 commits into from
Aug 26, 2024
Merged

[BSVR-217] 리뷰 공감에 분산락 추가 #166

merged 27 commits into from
Aug 26, 2024

Conversation

EunjiShin
Copy link
Collaborator

@EunjiShin EunjiShin commented Aug 26, 2024

📌 개요 (필수)


🔨 작업 사항 (필수)

  • 분산락 aop와 annotation 추가
  • 리뷰 공감 기능에 분산락 적용
  • 멀티 스레드 환경에서 공감 기능 통합 테스트 추가
  • 통합 테스트에 필요한 기타 설정들
    • application-test.yml과 환경변수 설정
    • @value가 동작 안하는 이슈 -> Properties로 변경
    • test data.sql

⚡️ 관심 리뷰 (선택)

  • 환경변수는 저희 쓰던거 고대로 쓰면 되어요~ 저는 IntelliJ에 세팅해놨어염 (필요하면 슬랙으로 요청)

🌱 연관 내용 (선택)

  • jwt, aws 관련 @value 변수를 Properties로 이관했어요. (왠진 모르겠는데 통합테스트할 때 에러떠서......)
    • 로컬에서 잘 동작하는 걸 확인하긴 했는데... 혹시 모르니까 한번씩 풀 받아서 관련 API 테스트해주세요!
  • 평소처럼 fake를 이용하지 않고, 통합 테스트를 만든 이유
    • 분산락 어노테이션과 aop와 embedded redis를 사용해야하기 때문.
    • 그리고 fake에서 synchronized를 이용해 repository를 구현하면, 분산락에 의해 동시성제어가 된건지, synchronized에 의해 동시성제어가 된건지 판단하기 애매하다고 판단했어요.
    • 혹시 통합 테스트 말고 기존 방법으로 해결할 수 있다면 알려주세요~

💻 실행 화면 (필수)

현재 공감/공감 취소가 toggle 형태로 개발되어있으므로, 유저들이 특정 리뷰에 처음으로 공감 요청을 보내는 상황으로 환경을 구성했어요.
즉 100명의 유저가 리뷰 A에 공감을 한 번씩 한 상황 = 리뷰 A의 공감 수가 100이어야 합니다.

  • 분산락을 적용하지 않은 경우, 모든 공감 요청에 성공했지만 최종 공감 수가 1이다.
스크린샷 2024-08-26 오후 11 05 53
  • 분산락을 적용한 경우, 모든 공감 요청에 성공하고 최종 공감 수가 100이다.
스크린샷 2024-08-26 오후 11 08 07

Copy link

github-actions bot commented Aug 26, 2024

Test Results

53 tests  +1   53 ✅ +1   4s ⏱️ +3s
18 suites +1    0 💤 ±0 
18 files   +1    0 ❌ ±0 

Results for commit 0683484. ± Comparison against base commit 866914b.

♻️ This comment has been updated with latest results.

@EunjiShin EunjiShin self-assigned this Aug 26, 2024
@EunjiShin EunjiShin marked this pull request as ready for review August 26, 2024 14:49
Copy link
Member

Choose a reason for hiding this comment

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

Properties 변환 굿이에용

Comment on lines 107 to 111
@Enumerated(EnumType.STRING)
@ColumnDefault("VIEW")
@ColumnDefault("'VIEW'")
@Column(name = "review_type", nullable = false)
private ReviewType reviewType;

Copy link
Member

Choose a reason for hiding this comment

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

VIEW까지..?

Copy link
Member

Choose a reason for hiding this comment

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

호오...

Copy link
Member

@wjdwnsdnjs13 wjdwnsdnjs13 left a comment

Choose a reason for hiding this comment

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

게더에서 윈도우까지 확인 완료
GOOD!

@EunjiShin EunjiShin merged commit 4ad65cf into main Aug 26, 2024
5 checks passed
@EunjiShin EunjiShin deleted the feat/BSVR-217 branch August 26, 2024 15:51
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.

3 participants