Skip to content

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

@huhdy32

Description

@huhdy32

high

학교 정보 조회와 포인트 정보 조회는 서로 의존성이 없는 네트워크 호출이므로, CompletableFuture를 사용하여 병렬로 처리하면 API 응답 시간을 단축할 수 있습니다. 현재는 순차적으로 실행되어 불필요한 대기 시간이 발생합니다.

다음과 같이 수정할 수 있습니다:

// ...
final MemberInfoResult result = memberQueryService.getInfo(memberPrincipal.memberId());

// I/O-bound 작업을 위한 별도의 Executor를 주입받아 사용하는 것이 좋습니다.
// private final Executor ioExecutor;

CompletableFuture<SchoolInfo> schoolInfoFuture = CompletableFuture.supplyAsync(() -> 
    schoolClient.getSchool(RequestType.JSON.getType(), result.schoolCode())
        .orElse(SchoolInfo.none()), ioExecutor);

CompletableFuture<PointInfo> pointInfoFuture = CompletableFuture.supplyAsync(() -> 
    pointClient.getRemainPoint(memberPrincipal.memberId()), ioExecutor);

CompletableFuture.allOf(schoolInfoFuture, pointInfoFuture).join();

final SchoolInfo schoolInfo = schoolInfoFuture.get();
final PointInfo pointInfo = pointInfoFuture.get();

return ResponseEntity.ok(Responses.MemberInfoDetailResponse.from(result, schoolInfo, pointInfo));

이렇게 변경하면 두 외부 호출을 동시에 실행하여 전체 대기 시간을 줄일 수 있습니다.

Originally posted by @gemini-code-assist[bot] in #227 (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