YunDaeHyeon
← 절약학개론

지오코딩·이미지 API 캐싱 트러블슈팅

2025.05적용 완료

반복적인 외부 API 호출로 인한 매장 목록 지연을 DB 캐싱으로 개선했습니다.

문제

  • 매장 데이터에는 상호명과 주소만 있고 좌표가 없어, 앱이 실행 중에 주소를 좌표로 바꾸면서 지연이 발생
  • 매장에 대표 썸네일이 없어 네이버 검색 API로 매번 조회했고, 제휴 매장 50개를 볼 때 호출이 50번 발생

기준과 판단

  • 역지오코딩과 반경 기반 필터링도 검토했지만, 어느 쪽이든 매장별 좌표가 먼저 있어야 한다는 점은 그대로여서 근본 해결이 아니라고 판단
  • 좌표와 이미지 URL 모두 매장마다 거의 바뀌지 않는 값이므로, 매번 조회할 대상이 아니라 한 번 받아 저장할 대상으로 정의
  • 확보한 매장 약 100곳의 좌표는 한 번만 전처리하고, 사용자가 매장을 등록·수정할 때만 즉시 변환
  • 이미지는 image_url 컬럼에 저장해 재사용하고, 값이 없을 때만 API를 호출

트레이드오프

  • 저장한 값이 원본과 어긋날 수 있다는 점을 감수하는 대신, 조회 경로에서 외부 API 의존을 걷어내는 쪽을 선택
  • image_url을 nullable로 두고 기본 이미지로 대체해, 이미지가 없는 매장 때문에 목록 전체가 막히지 않게 함
  • 좌표 변환 비용을 조회 시점에서 등록 시점으로 옮겨, 자주 일어나는 작업 대신 드물게 일어나는 작업이 비용을 지게 함

결과

  • 매장 50개 조회 시 이미지 API 호출이 50회에서 9회로 감소 (82%)

관련 프로젝트