콘텐츠로 이동

ADR 장소 검색 — 카카오 로컬 프록시 (MSG-251)

요약

검색바의 자유 텍스트 장소 검색("부산대·홍대")은 카카오 로컬 키워드 검색을 BE 프록시(GET /api/search/places?q=)로 채택 (2026-07-28, 팀원 K). 지도는 네이버 유지 — 혼용은 카카오 데브톡 150397 스태프 공식 답변으로 허용 확인(조건: 실시간 호출 기반만, 저장 목적 호출 불가 → 결과 캐시·DB 저장 금지). ADR 지도 SDK 네이버 전환의 재검토 트리거("랜드마크를 외부 API 의존으로 결정하면 카카오 Local 재평가")가 zone(MSG-234) 보류로 발동된 사례. 234의 "지역 검색"은 MSG-251로 이관, 234는 순수 표시명으로 축소. 스모크 실측(4곳): 카카오 WGS84 좌표가 변환 없이 우리 행정동 폴리곤·GridEncoder에 하위 행정동 단위까지 정확 매핑 — 부산대→장전2동·서면역→부전2동·홍대입구역→서교동(법정동 동교동을 행정동으로 정확 변환)·광안리→광안2동.

이 노트로 답할 수 있는 질문

  • 장소 검색은 어느 공급자로, 왜 카카오인가? (네이버 오픈API 대비)
  • 네이버 지도 위에 카카오 검색 결과를 표시해도 되나? (공식 근거)
  • 왜 검색 결과를 캐시하면 안 되나? (약관 조건)
  • 카카오 좌표가 우리 격자·행정동에 맞는다는 근거는? (스모크 실측)
  • MSG-234(zone)·MSG-238(전역 탐색)과 검색의 스코프 경계는?

결정 요약

  1. 공급자 = 카카오 로컬 키워드 검색: 일 10만/월 300만 무료 · WGS84 직결(x=lng, y=lat) · 페이지당 15건 · POI 커버리지(카카오맵 기반). 네이버 지역검색 오픈API(일 25,000 합산·display≤5·mapx÷1e7 변환)는 폴백 기록만. 카카오 앱은 OAuth용 "필맵" 앱 재사용(로컬 API 활성화 완료, 2026-07-28).
  2. 혼용 약관: 데브톡 150397 스태프 답변 "타사 지도 SDK와 혼용하여 사용하셔도 약관 상 이슈 없음" — 조건 준수 설계: 실시간 패스스루 프록시, Redis 캐시·place 저장 금지, REST 키 서버 보관, FE 디바운스 300ms.
  3. 응답 합성: 좌표 → GridEncoder.encode 즉석 계산으로 gridId 포함(저장 아님) — FE는 선택 즉시 지도 이동+격자 하이라이트. 지도 이동과 격자 판정을 같은 카카오 좌표 하나로 해 내부 일관성 보장(공급자 간 대표 좌표 편차는 100m 격자 MVP 수용).
  4. 스코프 경계(ver6 검색 화면): 자유 텍스트 POI = MSG-251 / 무입력 "전체 지역(행정동별 격자 수)" = MSG-238(축=행정동 확정 — 디자인의 구 단위 리스트는 오기) / 최근 방문·검색 = FE 로컬.