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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions