Skip to content

![high](https://www.gstatic.com/codereviewagent/high-priority.svg) #131

@huhdy32

Description

@huhdy32

high

현재 구현은 랭킹 페이지의 각 항목에 대해 memberClient.getMemberInfo()를 개별적으로 호출하고 있습니다. 이는 페이지 크기(N)만큼 네트워크 API 호출을 발생시키는 N+1 문제를 야기합니다. 이로 인해 상당한 성능 저하가 발생하고 멤버 서비스에 불필요한 부하를 줄 수 있습니다.
페이지에 포함된 모든 멤버 정보를 한 번의 배치 요청으로 가져오도록 수정하는 것을 권장합니다.

제안:

  1. rankPageQueryService로부터 PageResult<RankItemResult>를 가져옵니다.
  2. 결과 목록에서 모든 memberId를 수집합니다.
  3. memberClientgetMemberInfos(List<Long> memberIds)와 같은 배치 조회 메소드를 추가하고, 이를 호출하여 모든 MemberInfo를 한 번에 가져옵니다. (이를 위해서는 멤버 서비스에 새로운 API 엔드포인트가 필요할 수 있습니다.)
  4. memberId를 키로 하는 Map<Long, MemberInfo>를 생성하여 조회를 용이하게 합니다.
  5. RankItemResult를 순회하며 맵에서 MemberInfo를 조회하여 최종 PageResult<RankPageItemResponse>를 구성합니다.

이렇게 하면 네트워크 호출을 페이지당 한 번으로 줄일 수 있습니다.

Originally posted by @gemini-code-assist[bot] in #129 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions