시스템 디자인 아틀라스 학습 문서 / 위치 기반 / Chapter 18 전체 로드맵
CASE · ADVANCED읽기 27분검토일 2026-08-23DATA VERSIONED

지도·경로 탐색
서비스 설계

지도는 빠르게 그려야 하고, 경로는 정확하게 계산해야 합니다. 타일·검색·도로 그래프·교통 델타를 서로 다른 정본과 갱신 주기로 분리하면 ETA를 최신화하면서도 재현·롤백할 수 있습니다.

개념 이해요구사항면접 질문장애 대응진도 저장
30초 핵심 요약

렌더링은 versioned vector tile과 CDN으로, 검색은 place index로, 경로는 immutable graph snapshot과 짧게 사는 traffic delta로 처리합니다. 하나의 route 응답에는 두 버전을 함께 기록해 오래된 교통·잘못된 그래프를 구분하고 안전하게 되돌립니다.

MAP PLANEz/x/y · CDN · zoom cache
ROUTE PLANEsnap · graph · turn restriction
ETA CONTRACTgraph + traffic version
01 · REQUIREMENTS

보이는 지도와 계산하는 길을 분리한다

# 요구사항

공개 타일은 대량 cache가 가능하지만, 장소 검색·경로·실시간 위치는 개인화·시간·권한의 영향을 받습니다. 네 요청을 하나의 데이터베이스 조회로 묶지 않습니다.

TILE지도 렌더링

뷰포트, 줌, 스타일에 맞는 벡터 타일을 빠르게 전달합니다.

FIND장소·주소 검색

언어·국가·정규화로 place 후보와 좌표를 찾습니다.

ROUTE경로와 턴 안내

수단·제한·경유지에 맞는 edge 경로와 대안을 계산합니다.

ETA교통 반영 ETA

traffic version·confidence와 함께 추정 도착 시간을 반환합니다.

02 · ARCHITECTURE

두 종류의 버전으로 경로를 설명한다

# 고수준 아키텍처
지도 데이터·경로 계산 분리immutable graph + expiring traffic delta
지도와 경로 탐색 서비스 아키텍처클라이언트가 CDN에서 벡터 타일을 받고 API Gateway를 통해 장소 검색과 route orchestrator를 호출한다. 라우터는 도로 그래프 스냅샷과 교통 델타를 조합한다. Clientviewport · queryroute requestconsent boundary CDN · tile originstyle / z / x / y / ETag Gateway + place searchgeocode · place_id · snap Route orchestratorcache · versions · fallback ETA resultconfidence Road graph snapshotregion · graph_version · turns Traffic deltaTTL · watermark tile plane은 CDN에서, route plane은 snapshot + 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

최신성은 재현성과 함께 설계한다

# 대안 비교
선택강점주의점권장 상황
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
SOURCES

공식·1차 출처

NEXT CASE STUDY분산 메시지 큐 설계
EDITORIAL NOTES

작성·검토·참고 자료

콘텐츠 원칙
이 문서는 독립적으로 재작성한 한국어 학습 자료입니다. 사실과 학습용 설계 가정을 구분합니다.
최종 검토
예상 학습 시간
27분

참고 자료

사실 오류·출처 정정은 문의·정정 페이지로 알려 주세요.