Skip to content

feat : 트렌딩 게시글 조회 api 추가(#128)#129

Merged
myqewr merged 1 commit intodevelopfrom
feature/#128
May 28, 2025
Merged

feat : 트렌딩 게시글 조회 api 추가(#128)#129
myqewr merged 1 commit intodevelopfrom
feature/#128

Conversation

@myqewr
Copy link
Member

@myqewr myqewr commented May 28, 2025

🌱 관련 이슈

📌 작업 내용 및 특이사항

  • 트렌딩 게시물 조회 api 추가
  • 조회 수, 좋아요 수, 스크랩 수 각각 동일한 비율로 산정하여 15개의 게시물을 조회
  • Cache 사용하기 위해서 기존 CaffeinCacheManagerConfig를 트렌딩 게시글 조회 용 캐시 매니저 추가 설정함.
  • TTL은 5분으로 함. 그 시간 안에 게시물 삭제되는 것에 있어서는 낙관적 처리(인기 게시물이 삭제되는 경우는 드물기에)
  • Cacheable 사용 위해서 GetTrendingPostsWithCachePort& Adapter를 두고, usecase 계층에서 interface 호출하는 방식으로 적용.

🔍 참고사항

📚 기타

@myqewr myqewr self-assigned this May 28, 2025
@myqewr myqewr added the ⚡ feature 새로운 기능 추가 및 수정 label May 28, 2025
@myqewr myqewr requested a review from hisonghy May 28, 2025 11:47
@hisonghy
Copy link
Member

좋아요 수, 조회 수, 스크랩 수 점수산정 기준은 어떻게 되나요?!

@myqewr
Copy link
Member Author

myqewr commented May 28, 2025

좋아요 수, 조회 수, 스크랩 수 점수산정 기준은 어떻게 되나요?!

현재 시점 1주일 이전부터 작성된 게시물에 대해서만 대상으로 삼고(1주일보다 더 오래된 게시물은 포함 x ), 좋아요 수, 조회 수, 스크랩 수 각각 0~1로 정규화 후에 3개 평균값으로 산정합니다!

@hisonghy
Copy link
Member

캐시 TTL을 5분으로 했는데, 최신 데이터 반영에는 좋지만 자주 조회되는 데이터고 만료될 때마다 평균을 계속 계산해야하는 로직인데 성능상 괜찮을까요?!

@myqewr
Copy link
Member Author

myqewr commented May 28, 2025

캐시 TTL을 5분으로 했는데, 최신 데이터 반영에는 좋지만 자주 조회되는 데이터고 만료될 때마다 평균을 계속 계산해야하는 로직인데 성능상 괜찮을까요?!

실시간성을 얼마나 잡느냐 관점에 따라 다를 수 있을 것 같지만 저는 5분 정도가 적절하다고 생각해서 우선 설정을 해 놨습니다. 그런데 5분 만료 뒤에 첫 요청 시 조회 속도가 느려지는 것이 문제가 될 수 있으니 5분보다 먼저 스케줄러 작업해서 캐시 업데이트 해 놓는 것도 방법인 것 같습니다. 제가 생각했을 때는 계산 작업으로 주기적으로 서버에 부담이 가는게 걱정되기 보다는 ttl 만료 후 첫 요청 시 속도가 느려지는게 걱정인데, 송현님 생각하시기에는 계산 작업 횟수 자체를 줄여서 서버에 부담이 안가게 하는게 더 맞다고 보시나요??

@hisonghy
Copy link
Member

hisonghy commented May 28, 2025

음 만약 계산 횟수를 줄인다면 TTL을 늘리는 방법이 있을까요?

@myqewr
Copy link
Member Author

myqewr commented May 28, 2025

음 만약 계산 횟수를 줄인다면 TTL을 늘리는 방법이 있을까요?

넵 그 방법 외에는 잘 떠오르지 않는 것 같습니다. 아니면 횟수 자체를 줄이지 말고, 계산되는 시간 자체를 줄일 수 있게 조금 더 신경써서 쿼리 튜닝이랑 정산 로직 개선해볼 수 있을 것 같습니다. 그리고 TTl은 적합하게 다시 설정하고 아까 말씀드린 것 처럼 ttl 만료 전에 스케줄러로 캐시 업데이트 해놓을 수 있을 것 같습니다.

@Cacheable(value = TRENDING_POSTS_CACHE_NAME, key = TRENDING_POSTS_CACHE_KEY_ALL)
public List<TrendingPostVo> loadTrendingPosts() {

log.info("오잉 캐시 실행 안됨!!");
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 Author

Choose a reason for hiding this comment

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

앗.. 못 지웠네요…ㅎㅎ

@myqewr myqewr merged commit 9716c08 into develop May 28, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚡ feature 새로운 기능 추가 및 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

⚡ 트렌딩 게시물 API 구현(5/21예정)

2 participants