[06일차] | 대규모 시스템 설계 기초2 | 책너두
3장 구글 맵
1단계: 문제 이해 및 설계 범위 확정
- 이번 과제에서 집중해야 할 포인트는 아래와 같다.
- 사용자 수는 10억 DAU
- 주요 기능은 위치 갱신, 경로안내, ETA, 지도 표시에 초점을 맞춘다.
- 도로 데이터는 수 TB 수준
- 교통 상황 고려
- 다양한 교통수단 지원
기능 요구사항
- 사용자 위치 갱신
- 경로 안내 서비스(ETA 포함)
- 지도 표시
비기능 요구사항
- 정확도: 잘못된 경로를 안내하면 안된다.
- 부드러운 경로 표시
- 데이터와 배터리의 소모 고려
- 기타 기본적인 가용성 및 규모 확장성 등
지도 101 - 기본기
측위 시스템
- 현실은 3D 공간인 지구를 2D 지도로 표현해야 한다.
- (참고)수많은 도법들이 존재하지만, 구글은 웹 메르카토르 도법을 사용중이다.
지오코딩(Geocoding)
- 주소를 위경도로 변환하는 것을 말한다.
- 이를 반대로 변환하는 것을 역 지오코딩(Reverse Geocoding)이라고 한다.
지오 해싱(Geo Hashing)
지도 타일
- 지도를 표현하는 가장 기본적인 방법이다.
- 큰 지역의 지도를 하나의 이미지로 표현하는 것은 불가능하다.
- 따라서 지도를 여러 개의 타일로 나누어 표현한다.
- 확대 수준 별로 타일을 미리 준비해두어야 한다.
- 이를 통해 사용자가 필요한 부분만을 로드할 수 있다.
경로 안내 알고리즘
- 경로 탐색은 대부분 다익스트라(Dijkstra) 알고리즘이나 A* 알고리즘을 사용한다.
- 여기서는 상세한 내용은 생략한다.
- 경로 안내는 엣지와 노드로 이루어진 그래프를 사용한 그래프 구조를 사용한다.
경로 타일
- 이때도 지도 타일과 비슷하게 경로 타일을 구성하여 사용한다.
- 이를 통해 탐색할 경로의 양이 줄어들고 탐색 성능도 좋아진다.
- 경로 타일은 인접 타일과의 참조도 함께 가지고있다. 이를 통해 보다 큰 규모의 경로를 표현할 수 있다.
계층적 경로 타일
- 경로 안내가 사용 할 수 있을만큼 효율적으로 동작하기 위해서는 적당한 수준의 구체성을 가진 도로 데이터가 필요하다.
- 이게 너무 과도하면 데이터의 양이 매우 커지고, 너무 적으면 경로 안내의 정확도가 떨어진다.