1.7 KiB
1.7 KiB
최근 종료 라이브(getLatestFinishedLive) 최적화
getLatestFinishedLive조회를 DB 단계에서 차단 관계(left join)로 필터링하도록 변경- 조회 결과를
GetLatestFinishedLiveResponse로 QueryProjection 하여 서비스 단 추가map제거 - 회원 차단(
memberBlock) / 차단해제(memberUnBlock) 시 최근 종료 라이브 캐시 무효화 적용 - 정적 진단 및 테스트/빌드 검증 수행
- 검증 기록 작성
검증 기록
1차 구현
- 무엇을:
getLatestFinishedLive를 서비스 후처리(filter/map)에서 제거하고,LiveRoomRepository에서leftJoin(blockMember)+blockMember.id.isNull조건으로 차단 관계를 DB 단계에서 제외하도록 변경했다. 또한GetLatestFinishedLiveResponse에@QueryProjection생성자를 추가해 쿼리 결과를 응답 DTO로 바로 생성했다. 마지막으로memberBlock/memberUnBlock에서getLatestFinishedLive:{memberId}캐시를 즉시 evict 하도록 반영했다. - 왜: 기존 로직은 조회 후 애플리케이션 레벨에서 차단 여부를 반복 조회하고 별도
map을 수행해 비용이 컸고, 차단/차단해제 직후 최근 종료 라이브 캐시가 TTL 만료 전까지 stale 상태가 될 수 있어 DB 레벨 필터링 및 이벤트성 캐시 무효화가 필요했다. - 어떻게:
lsp_diagnostics(대상:GetLatestFinishedLiveResponse.kt,LiveRoomRepository.kt,LiveRoomService.kt,MemberService.kt) 실행 결과: 환경상 Kotlin LSP 미구성으로 진단 불가./gradlew test && ./gradlew build실행 결과: 성공 (BUILD SUCCESSFUL)./gradlew tasks --all실행 결과: 성공 (BUILD SUCCESSFUL)