@FeignClient(
name = "hubClient",
url = "${clients.hub.url}",
configuration = ai_service.infra.config.FeignConfig.class
)
public interface HubClient {
@GetMapping("/v1/hubs/addresses")
List<HubAddressForAiResponseV1> getAddresses(@RequestParam("ids") List<UUID> addressIds);
}
"여기서 ddress를 리스트 형태로 가져오지 않고, 허브 서비스 쪽에 있는 허브 주소 단건 조회를 가져오는 거로 수정하면, AiService 쪽에서 로직이 좀 더 단순화 될까?"
를 고민해봤다.
결론은, 장점보다 단점이 더 크다고 생각했다.
단건 조회로 바꾸면 AiService의 코드가 ‘약간’ 단순해질 수는 있지만, 운영 관점에서는 N+1 네트워크 호출로 성능/안정성이 악화될 가능성이 크다.
그래서 보통은 “배치 조회 유지 + 헬퍼 메서드로 의미를 드러내는 방식”을 가장 권장한다고 한다.
addrResponses → toMap() 같은 변환 로직 없이, 그때그때 라벨만 뽑는 헬퍼를 쓰면 된다.labelOf(UUID id) 같은 메서드를 두고 shipFrom과 via에서 재사용.