지도 서비스 구현 시 마주하는 현실적인 문제들

보통 지도를 직접 구현하려고 하면 다음 세 가지 지점에서 고민하게 됩니다.

1. 데이터 업데이트의 번거로움

  • 문제: DB에 새 건물이 추가되었는데, 지도를 다시 그리려면(Tile Generation) 수 시간이 걸리는 전처리 과정을 매번 거쳐야 합니다.
  • Martin의 방식: 전처리 과정 자체가 없습니다. 사용자가 지도를 보는 순간 DB에서 최신 좌표를 읽어와 바로 그려줍니다.

2. 서버 자원의 한계

  • 문제: 지도 데이터는 용량이 크고 요청이 많아서 서버가 쉽게 뻗거나 느려집니다.
  • Martin의 방식: Rust 언어 특유의 저수준 제어를 통해 메모리 사용량을 극단적으로 낮췄습니다. 저사양 서버에서도 많은 요청을 버텨냅니다.

3. 파편화된 데이터 관리

  • 문제: 어떤 데이터는 PostgreSQL에 있고, 어떤 건 대용량 파일(MBTiles)이라 관리 포인트가 늘어납니다.
  • Martin의 방식: 서버 하나가 여러 형태의 데이터를 동시에 읽어서 하나의 규격으로 합쳐줍니다. 개발자는 소스가 어디인지 신경 쓸 필요 없이 API 하나만 호출하면 됩니다.

4. 부수적인 설정의 피로도

  • 문제: 지도를 띄우려면 타일 데이터 외에도 폰트, 아이콘, 스타일 파일 등 챙길 게 너무 많습니다.
  • Martin의 방식: 이런 부수적인 에셋들을 서버 내부에서 자체적으로 생성하거나 서빙하는 기능이 포함되어 있습니다. 별도의 서빙 설정을 추가로 할 필요가 없습니다.

데이터를 화면에 띄우기까지의 모든 중간 귀찮음을 대신 처리해 주는 유틸리티에 가깝습니다. GIS 시스템을 밑바닥부터 구축할 때 겪는 반복적인 삽질을 줄여주는 프로젝트입니다.