Skip to content

Issue #1 외부 API 호출 시간 최소화

DongJun Kim edited this page Feb 21, 2024 · 2 revisions

문제 상황

image
  • 비용 정보는 네이버 지도, odsay 같은 외부 API를 사용해서 받아오는 정보입니다.
  • 외부 API를 동기적으로 호출해서 경로 비용을 받아오는데 응답 시간이 너무 많이 소요되는 것이 문제였습니다.
    • 평균적으로 API 응답 시간을 받아오는데 1초의 시간이 소요됐습니다.
    • 만약 여정 페이지에 10개의 여행지가 존재한다면, 9번의 API 호출이 필요하고, 동기적으로 외부 API를 호출하기에, 9초 가량의 시간이 소요됐습니다.

해결 방법

  • 동기적으로 외부 API를 호출하는 것이 문제였기에, API 호출을 비동기적으로 호출하는 것으로 해결했습니다.
Screenshot 2024-02-21 at 17 01 37 Screenshot 2024-02-21 at 17 00 57
  • @Async 어노테이션을 이용해서 asyncPathComponent.calculatePath 이 비동기적으로 실행되게 구현했습니다.
  • asyncPathComponent.calculatePath 에서 실행한 결과는 synchronized 메소드를 통해 리스트에 담기게 됩니다.

결과

  • 초기에는 N번의 외부 API 호출이 발생하면, 발생한 API 응답 시간을 모두 더해준 시간만큼 소요됐습니다.
  • 비동기적으로 호출하게 변경한 이후로,가장 오래 걸린 외부 API 응답 시간을 기준으로 결과가 리턴된 것을 확인할 수 있습니다.
image