불변 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 경계의 장거리 경로 조합이 복잡합니다.
01 · REQUIREMENTS
보이는 지도와 계산하는 길을 분리한다
# 요구사항
공개 타일은 대량 cache가 가능하지만, 장소 검색·경로·실시간 위치는 개인화·시간·권한의 영향을 받습니다. 네 요청을 하나의 데이터베이스 조회로 묶지 않습니다.
TILE지도 렌더링
뷰포트, 줌, 스타일에 맞는 벡터 타일을 빠르게 전달합니다.
FIND장소·주소 검색
언어·국가·정규화로 place 후보와 좌표를 찾습니다.
ROUTE경로와 턴 안내
수단·제한·경유지에 맞는 edge 경로와 대안을 계산합니다.
ETA교통 반영 ETA
traffic version·confidence와 함께 추정 도착 시간을 반환합니다.
02 · ARCHITECTURE
두 종류의 버전으로 경로를 설명한다
# 고수준 아키텍처
지도 데이터·경로 계산 분리immutable graph + expiring traffic delta
버전 계약 · graph_version은 도로 연결성·제한을 담은 불변 스냅샷, traffic_version은 짧은 속도 보정입니다. ETA가 이상하면 둘 중 무엇을 되돌렸는지 구분할 수 있어야 합니다.
03 · REQUEST FLOW
검색 후 snap하고, 그 뒤에만 길을 찾는다
# 요청 흐름
1Geocode
문자열·좌표를 정규화해 place_id 또는 후보 좌표로 바꿉니다.
2Snap
수단·진입 제한을 고려해 가까운 routable edge로 붙입니다.
3Graph route
고정된 graph version에서 후보 경로와 turn 비용을 계산합니다.
4Apply delta
호환 traffic version의 edge 속도 보정을 ETA에 적용합니다.
5Cache & explain
버전·confidence·fallback을 포함해 응답하고 짧게 캐시합니다.
04 · TRADEOFFS
최신성은 재현성과 함께 설계한다
# 대안 비교
교통 정보를 빠르게 덮어쓰면 최신성은 높아지지만 같은 경로를 재현하기 어렵습니다. graph와 overlay를 버전으로 고정하고 마지막 정상 조합으로 돌아갈 수 있게 합니다.
선택
강점
주의점
권장 상황
raster tile
클라이언트가 단순하고 표현이 고정됨
스타일·레이어 상호작용과 고DPI에 불리
읽기 전용의 단순 지도
vector tile
줌과 레이어를 클라이언트에서 조합
렌더러·스타일 호환을 관리해야 함
다층 지도, 빠른 스타일 실험
live graph
새로운 도로 상태 반영이 빠름
재현·롤백·latency가 어려움
작은 실험 지역
snapshot + delta
경로 재현성과 최신 ETA의 절충
버전 호환·watermark 운영 필요
프로덕션 경로 서비스
외부 Route API
출시가 빠르고 운영이 적음
비용·쿼터·정책 경계에 의존
초기 제품·수요 검증
05 · FAILURE MODES
장애를 “최신 데이터 없음”으로만 부르지 않는다
# 장애 시나리오 6개
↗CDN miss 폭증
새 style version 또는 핫 줌 영역이 origin을 직접 때려 지도 로딩이 느려집니다.
대응 · immutable URL, stale 응답, origin shield, prefetch 축소. hit율과 tile P95를 함께 봅니다.
×graph build 결함
잘못된 turn restriction이 특정 구간을 우회시키거나 NoRoute를 늘립니다.
대응 · canary 기준 경로 diff 후 승격, pointer 롤백. 샘플 route와 no-route율을 재검증합니다.
⌛traffic feed 지연
속도 보정 watermark가 늦어 최신처럼 보이는 오래된 ETA가 나옵니다.
대응 · version·confidence 하향, last-known-good 또는 base speed fallback. watermark lag를 공개적으로 계측합니다.
!route shard 포화
대형 이벤트와 재경로가 겹쳐 queue age와 P99가 증가합니다.
대응 · region admission control, request cache, 대안 수 축소. backlog drain과 CPU/route를 확인합니다.
?geocoder 색인 지연
신규 장소 또는 이름 변경이 검색에 안 보이고 사용자는 경로를 시작하지 못합니다.
대응 · 이전 색인을 유지하고 source-to-index lag를 알람. zero-result와 선택 후 route 성공률을 봅니다.
⊘동의 철회 전파 실패
사용자가 위치 추적을 끄고도 파생 파이프라인이 이전 토큰을 읽습니다.
대응 · fail closed, 토큰 즉시 폐기, 목적별 audit. revoke 후 금지 read가 0인지 검증합니다.
06 · OPERATIONS
ETA 품질, 위치 프라이버시, 비용을 같이 본다
# 운영 관점
⌾보안·개인정보
원문 좌표와 운영 로그를 분리하고, 목적별 동의·보존·삭제·접근 감사를 강제합니다. 대량 좌표 탐색에는 quota와 범위 검증을 둡니다.
consent · retention · audit
◫관측 가능성
tile hit, query P95, snap/no-route, queue age, graph·traffic version 분포, ETA signed error를 지역·거리·시간으로 나눠 봅니다.
watermark · version · ETA error
₩비용 모델
CDN egress, graph version 동시 상주, route CPU, traffic join, 검색 색인, 개인정보 삭제·감사 비용을 plane별로 분리해 계산합니다.
egress × cache miss × CPU/route
면접 모드 · 추가 질문05:00
“교통 피드가 15분 늦어졌지만 도로 그래프는 정상입니다. 신규 경로의 ETA와 기존 안내의 재경로를 어떤 version·confidence·fallback으로 처리하고, 잘못된 최신성 표기를 어떻게 막겠습니까?”
graph / traffic 분리watermarkfallback 명시version rollbackETA signed error
답변 구조 보기 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 기준을 확정한다.
INTERVIEW ↔ PRACTICE · 면접과 실무의 차이
graph·traffic version을 설명하고 독립 rollback을 운영하기
INTERVIEW · 면접
타일 전송과 경로 계산을 나눈 뒤 graph와 traffic의 시간축을 다시 분리합니다.
양방향 A* 기준선과 versioned 전처리를 설명합니다.
route 응답의 graph·traffic version을 말합니다.
stale traffic과 graph 연결성 오류의 fallback을 나눕니다.
PRACTICE · 실무
graph canary와 traffic watermark를 다른 rollback 신호로 검증합니다.