뷰포트, 줌, 스타일에 맞는 벡터 타일을 빠르게 전달합니다.
지도·경로 탐색
서비스 설계
지도 화면이 빨리 뜨는 것과 경로가 정확한 것은 다른 문제입니다. 타일·검색·도로 graph·traffic overlay를 분리하고 어떤 버전으로 ETA를 계산했는지 남깁니다.
지도 타일, 장소 검색, 불변 도로 graph, 짧은 traffic overlay를 각각 운영합니다. 경로 응답에 graph·traffic version을 남겨 연결성 오류와 오래된 교통 정보를 독립적으로 감지하고 되돌립니다.
보이는 지도와 계산하는 길을 분리한다
공개 타일은 대량 cache가 가능하지만, 장소 검색·경로·실시간 위치는 개인화·시간·권한의 영향을 받습니다. 네 요청을 하나의 데이터베이스 조회로 묶지 않습니다.
언어·국가·정규화로 place 후보와 좌표를 찾습니다.
수단·제한·경유지에 맞는 edge 경로와 대안을 계산합니다.
traffic version·confidence와 함께 추정 도착 시간을 반환합니다.
두 종류의 버전으로 경로를 설명한다
graph_version은 도로 연결성·제한을 담은 불변 스냅샷, traffic_version은 짧은 속도 보정입니다. ETA가 이상하면 둘 중 무엇을 되돌렸는지 구분할 수 있어야 합니다.도로 구조와 실시간 교통을 어떻게 독립 배포하고 되돌릴 것인가?
versioned road graph + bidirectional A* + TTL traffic overlay
불변 road graph snapshot에서 양방향 A*를 기준 경로로 계산하고 교통 속도는 짧은 overlay로 덮습니다. 응답에 graph·traffic version을 남겨 연결성 오류와 stale traffic을 서로 독립 rollback합니다.
선택 이유
- 정적 도로 연결성과 빠르게 변하는 속도의 실패 범위를 분리합니다.
- 설명 가능한 기준선 뒤에 필요한 지역만 전처리를 추가할 수 있습니다.
- no-route·우회율과 ETA 오차를 각 version에 귀속할 수 있습니다.
graph와 traffic을 하나의 가변 데이터 세트로 즉시 갱신
잘못된 경로가 도로 연결성 변경 때문인지 지연된 교통 값 때문인지 구분하기 어렵고 독립 rollback이 불가능합니다.
감수한 단점
- graph snapshot과 version별 전처리 저장 비용이 듭니다.
- traffic 만료 때 역사 속도 fallback과 confidence 표시가 필요합니다.
- 지역 graph shard 경계의 장거리 경로 조합이 복잡합니다.
검색 후 snap하고, 그 뒤에만 길을 찾는다
문자열·좌표를 정규화해 place_id 또는 후보 좌표로 바꿉니다.
수단·진입 제한을 고려해 가까운 routable edge로 붙입니다.
고정된 graph version에서 후보 경로와 turn 비용을 계산합니다.
호환 traffic version의 edge 속도 보정을 ETA에 적용합니다.
버전·confidence·fallback을 포함해 응답하고 짧게 캐시합니다.
최신성은 재현성과 함께 설계한다
교통 정보를 빠르게 덮어쓰면 최신성은 높아지지만 같은 경로를 재현하기 어렵습니다. graph와 overlay를 버전으로 고정하고 마지막 정상 조합으로 돌아갈 수 있게 합니다.
| 선택 | 강점 | 주의점 | 권장 상황 |
|---|---|---|---|
| raster tile | 클라이언트가 단순하고 표현이 고정됨 | 스타일·레이어 상호작용과 고DPI에 불리 | 읽기 전용의 단순 지도 |
| vector tile | 줌과 레이어를 클라이언트에서 조합 | 렌더러·스타일 호환을 관리해야 함 | 다층 지도, 빠른 스타일 실험 |
| live graph | 새로운 도로 상태 반영이 빠름 | 재현·롤백·latency가 어려움 | 작은 실험 지역 |
| snapshot + delta | 경로 재현성과 최신 ETA의 절충 | 버전 호환·watermark 운영 필요 | 프로덕션 경로 서비스 |
| 외부 Route API | 출시가 빠르고 운영이 적음 | 비용·쿼터·정책 경계에 의존 | 초기 제품·수요 검증 |
장애를 “최신 데이터 없음”으로만 부르지 않는다
새 style version 또는 핫 줌 영역이 origin을 직접 때려 지도 로딩이 느려집니다.
잘못된 turn restriction이 특정 구간을 우회시키거나 NoRoute를 늘립니다.
속도 보정 watermark가 늦어 최신처럼 보이는 오래된 ETA가 나옵니다.
대형 이벤트와 재경로가 겹쳐 queue age와 P99가 증가합니다.
신규 장소 또는 이름 변경이 검색에 안 보이고 사용자는 경로를 시작하지 못합니다.
사용자가 위치 추적을 끄고도 파생 파이프라인이 이전 토큰을 읽습니다.
ETA 품질, 위치 프라이버시, 비용을 같이 본다
원문 좌표와 운영 로그를 분리하고, 목적별 동의·보존·삭제·접근 감사를 강제합니다. 대량 좌표 탐색에는 quota와 범위 검증을 둡니다.
tile hit, query P95, snap/no-route, queue age, graph·traffic version 분포, ETA signed error를 지역·거리·시간으로 나눠 봅니다.
CDN egress, graph version 동시 상주, route CPU, traffic join, 검색 색인, 개인정보 삭제·감사 비용을 plane별로 분리해 계산합니다.
답변 구조 보기 5단계
- 지도 타일·장소 검색·도로 graph·traffic overlay를 갱신 주기와 실패 범위에 따라 분리한다.
- 지역 graph에서 양방향 A*를 기준으로 시작하고, 측정된 병목에만 versioned 전처리를 추가한다.
- route 응답에 graph·traffic version과 confidence를 남긴다.
- stale traffic은 역사 속도로 degrade하고 graph 연결성 오류는 이전 snapshot으로 독립 rollback한다.
- no-route 비율, 우회율, ETA 오차를 canary와 실제 도착 결과로 검증한다. 이번 선택: 불변 road graph와 짧은 traffic overlay를 독립 배포하고 양방향 A*를 설명 가능한 기준선으로 둔다. 깨지는 신호: 새 graph의 no-route·우회율이 증가하거나 traffic watermark가 TTL을 넘는다. 다음 검증: 도시별 route p99와 ETA 오차를 비교해 landmark·계층 전처리의 적용 범위와 rollback 기준을 확정한다.
graph·traffic version을 설명하고 독립 rollback을 운영하기
타일 전송과 경로 계산을 나눈 뒤 graph와 traffic의 시간축을 다시 분리합니다.
- 양방향 A* 기준선과 versioned 전처리를 설명합니다.
- route 응답의 graph·traffic version을 말합니다.
- stale traffic과 graph 연결성 오류의 fallback을 나눕니다.
graph canary와 traffic watermark를 다른 rollback 신호로 검증합니다.
- no-route·우회율·route p99를 graph version별로 관측합니다.
- ETA 오차와 watermark age를 traffic version별로 대사합니다.
- graph rollback 중 전처리 index가 같은 snapshot인지 확인합니다.
기술 규격·공식 문서
- Mapbox — Vector tiles standards: PBF 기반 vector tile 형식과 geometry·attribute 인코딩.
- Google Maps Platform — Compute Routes overview: 이동 수단, 경유지, 교통 계산 옵션.
- OSRM — API Documentation: route·table·match API와 route annotation.
- Overpass API User's Manual: OSM 공간·태그 기반 데이터 질의의 목적.
- OpenStreetMap — Copyright and License: OSM 데이터 이용과 attribution 확인.
장소 검색과 경로 탐색의 차이를 비교합니다.
문의·정정
사실 오류·출처 정정은 문의·정정 페이지로 알려 주세요.