TECH 으로 돌아가기
TECH GITHUB 오늘 10분 읽기 36 READS

[심층분석] 설치도 서버도 없이 브라우저에서 GIS를 돌린다고? GeoLibre가 바꾸는 지도 분석의 문법

[심층분석] 설치도 서버도 없이 브라우저에서 GIS를 돌린다고? GeoLibre가 바꾸는 지도 분석의 문법
SOURCE IMAGE · GITHUB

지도 데이터 분석, 왜 이렇게 시작하기 어려웠을까요

혹시 지도 위에 데이터를 올려서 분석해보고 싶었던 적 있으신가요? 예를 들어 우리 동네 카페 분포를 보고 싶다거나, 배달 데이터를 지역별로 시각화하고 싶다거나요. 이런 걸 하는 소프트웨어를 GIS(지리정보시스템)라고 부르는데요, 쉽게 말해 '지도 위에 데이터를 얹어서 탐색하고 분석하는 도구'예요.

문제는 이 GIS라는 분야의 진입장벽이 꽤 높았다는 거예요. 업계 표준인 ArcGIS는 라이선스 비용이 연간 수백만 원 단위고요. 무료 대안인 QGIS는 훌륭하지만 데스크톱에 설치해야 하는 묵직한 프로그램이라 처음 켜면 메뉴가 수십 개씩 쏟아져서 어디부터 눌러야 할지 막막하죠. 웹에서 지도 서비스를 만들려면? GeoServer 같은 지도 서버를 따로 구축하고 운영해야 했어요. 어느 길을 택하든 '일단 뭔가를 설치하고 세팅하는' 관문이 있었던 거예요.

그런데 최근 공개된 GeoLibre는 이 공식을 정면으로 깨는 프로젝트예요. 브라우저에서 바로 열리고, 데스크톱 앱으로도 돌고, 모바일(안드로이드 네이티브)에서도 돌고, Jupyter 노트북 안에서도 돌아가요. 그리고 가장 중요한 포인트, 데이터가 서버로 올라가지 않고 내 기기 안에 머물러요. 이게 어떻게 가능한지, 왜 의미가 큰지 하나씩 뜯어볼게요.

기술 스택 뜯어보기: 브라우저가 데이터베이스가 되는 마법

GeoLibre의 기술 스택은 요즘 웹 기술의 '어벤저스' 같은 조합이에요. Tauri v2, React, TypeScript, MapLibre GL JS, DuckDB-WASM Spatial, deck.gl. 하나씩 쉽게 풀어볼게요.

DuckDB-WASM Spatial이 이 프로젝트의 심장인데요. DuckDB가 뭐냐면, '분석에 특화된 초경량 데이터베이스'예요. 흔히 'SQLite의 분석 버전'이라고 불려요. 그런데 이걸 WASM(웹어셈블리)으로 컴파일해서 브라우저 안에서 돌린다는 게 핵심이에요. WASM이라는 건, 쉽게 말해 C나 Rust로 짠 프로그램을 브라우저가 거의 네이티브 속도로 실행할 수 있게 해주는 기술이거든요. 그러니까 서버에 쿼리를 날리는 게 아니라, 내 브라우저 탭 안에 데이터베이스 엔진이 통째로 들어와서 SQL로 공간 분석('이 반경 안에 있는 건물 다 찾아줘' 같은 것)을 처리하는 거예요. 서버가 필요 없는 이유가 바로 이거예요.

MapLibre GL JS는 지도를 그리는 렌더링 엔진이에요. 원래 Mapbox라는 회사의 오픈소스 라이브러리였는데, 2020년에 Mapbox가 라이선스를 유료 쪽으로 바꾸면서 커뮤니티가 마지막 오픈소스 버전을 포크해서 키운 프로젝트거든요. 지금은 완전히 독립적인 생태계로 성장해서, '오픈소스 지도 렌더링'의 사실상 표준이 됐어요.

deck.gl은 우버가 만든 GPU 기반 대용량 시각화 라이브러리예요. 이게 왜 필요하냐면, 지도 시각화는 데이터가 금방 커지거든요. 서울시 건물만 해도 수십만 개인데, 이걸 일반적인 방식으로 그리면 브라우저가 버벅대요. deck.gl은 그래픽카드(GPU)에 렌더링을 통째로 맡겨서 수백만 개의 점이나 폴리곤도 부드럽게 그려내요. 실제로 GeoLibre 데모에는 맨해튼의 건물 수만 동을 3D로 세우고, 건축 연도별로 색을 입힌 뒤, 타임 슬라이더로 1850년부터 2025년까지 도시가 채워지는 과정을 애니메이션으로 보여주는 예제가 있어요. 이게 전부 브라우저에서 돌아가요.

Tauri v2는 데스크톱/모바일 앱을 만드는 프레임워크인데, Electron의 가벼운 대안이라고 보시면 돼요. Electron은 앱마다 크롬 브라우저를 통째로 품고 다녀서 용량이 100MB를 훌쩍 넘는데, Tauri는 운영체제에 이미 깔려 있는 웹뷰를 재활용하고 백엔드를 Rust로 짜서 몇 MB짜리 앱이 나와요. 게다가 v2부터는 안드로이드 같은 모바일까지 지원하거든요. 덕분에 하나의 코드베이스로 웹, 데스크톱, 모바일을 전부 커버하는 게 가능해진 거예요.

업계 맥락: 기존 도구들과 뭐가 다른가

비유하자면 이래요. ArcGIS는 '풀옵션 대형 세단'이에요. 뭐든 다 되지만 비싸고, 운전(학습)도 만만치 않죠. QGIS는 '무료로 받은 수동 기어 SUV'예요. 성능은 좋은데 조작법을 익히는 데 시간이 걸리고, 차고(데스크톱)에 세워둬야만 쓸 수 있어요. kepler.gl이나 Felt 같은 웹 시각화 도구는 '렌터카'에 가까운데, 예쁘고 편하지만 분석 깊이가 얕거나 내 데이터를 남의 서버에 올려야 하는 경우가 많아요.

GeoLibre는 이 사이의 빈 자리를 노려요. 시각화와 분석을 둘 다 하면서, 설치와 서버 없이, 데이터를 로컬에 둔 채로요. 특히 이 '로컬 퍼스트' 철학이 요즘 흐름과 맞물려 있는데요. 위치 데이터는 대부분 민감 정보잖아요. 고객 주소, 매장 매출, 배송 경로 같은 걸 외부 SaaS에 업로드하려면 보안 검토부터 막히는 경우가 많거든요. 브라우저 안에서만 처리되고 밖으로 안 나간다면 이 부담이 확 줄어요.

참고로 GeoLibre를 만든 opengeos는 leafmap, geemap 같은 파이썬 지리공간 라이브러리로 이미 유명한 오픈소스 조직이에요. 파이썬 생태계에서 쌓은 경험을 웹 네이티브 플랫폼으로 확장한 셈인데, Jupyter 노트북 통합이 자연스러운 것도 이 배경 덕분이에요. 클라우드 네이티브 포맷(GeoParquet, COG처럼 필요한 부분만 잘라 읽을 수 있는 데이터 형식) 흐름과도 궤를 같이하고요.

한국 개발자에게: 이렇게 써먹을 수 있어요

구체적인 시나리오로 볼게요.

학습 로드맵도 간단히 제안하면요. ① GeoJSON이 뭔지(좌표를 담은 JSON이에요) 30분만 훑어보고, ② GeoLibre 웹 버전에서 공공데이터 하나 올려서 놀아보고, ③ DuckDB의 spatial 확장 SQL 문법을 익히고, ④ 더 깊이 가고 싶으면 MapLibre와 deck.gl로 커스텀 시각화에 도전하는 순서예요. ①~②까지는 주말 하루면 충분해요.

마무리: 무거운 소프트웨어가 브라우저로 이사 오는 시대

Figma가 '디자인 툴은 설치하는 것'이라는 상식을 깼듯이, WASM과 GPU 렌더링의 성숙은 GIS 같은 무거운 전문 소프트웨어까지 브라우저로 끌어오고 있어요. GeoLibre는 그 흐름의 꽤 상징적인 사례고요. 물론 아직 젊은 프로젝트라 QGIS의 방대한 기능을 당장 대체하긴 어렵겠지만, '지도 분석의 첫 진입로'로서의 가치는 지금도 충분해 보여요.

여러분은 어떤 데이터를 지도에 올려보고 싶으세요? 업무에서 위치 데이터를 다루다 막혔던 경험이 있다면 댓글로 공유해주세요. 어떤 도구로 어떻게 풀었는지도 궁금하네요.


🔗 출처: GitHub

SOURCE · GITHUB
원문 전체 보기 → https://github.com/opengeos/GeoLibre
SHARE
처리 중...