2억 9천만 건의 시티 바이크(Citi Bike) 이동 데이터를 브라우저에서 시각화!
2억 9천만 건의 시티 바이크(Citi Bike) 이동 데이터를 브라우저에서 시각화하여 사용자 경험을 극대화함
DuckDB WASM을 활용하여 클라우드플레어(Cloudflare) CDN에 저장된 파케이(Parquet) 파일을 직접 쿼리함
deck.gl과 Mapbox를 사용하여 GPU 가속 렌더링을 구현, 수천 개의 자전거 이동을 동시 시각화함
OSRM을 통해 출발지와 도착지 간 최단 경로를 계산하여 자전거 이동 경로를 생성함
DuckDB WASM을 활용한 데이터 처리
프로젝트는 별도의 데이터 격리 아키텍처(Data Isolation Architecture) 없이, 클라우드플레어(Cloudflare) CDN에 저장된 파케이(Parquet) 파일을 DuckDB WASM을 통해 직접 쿼리한다. 이는 백엔드 서버 없이 브라우저에서 대용량 데이터를 처리할 수 있게 해준다. 웹 워커(Web Workers)를 사용하여 폴리라인(Polyline) 경로를 디코딩하고 사전 계산을 수행하여 메인 스레드의 부하를 줄이는 최적화도 적용되었다.
GPU 가속 렌더링을 위한 deck.gl 및 Mapbox
수천 개의 자전거 이동을 동시 시각화하기 위해 deck.gl과 Mapbox를 활용하여 GPU 가속 렌더링(GPU-accelerated Rendering)을 구현했다. deck.gl은 대규모 데이터 시각화에 특화된 라이브러리로, Mapbox를 통해 지도 시각화 기능을 제공한다. 이러한 기술들을 통해 부드럽고 인터랙티브한 사용자 경험을 제공하며, 대규모 데이터 시각화의 성능 문제를 해결했다.
경로 생성 및 데이터 제약 사항
프로젝트는 각 자전거 이동의 출발지와 도착지 정보만을 활용하여 OSRM을 통해 최단 경로를 계산하여 이동 경로를 생성한다. 하지만, 실제 경로가 아닌 최단 경로를 사용하기 때문에 정확도가 다소 떨어질 수 있다. 또한, 출발지와 도착지가 동일한 경우의 데이터는 제외된다는 제약 사항이 존재한다. 데이터 미저장 정책(Zero-Retention Policy)을 통해 개인 정보 보호를 강화했다.
커뮤니티 반응 및 기술적 개선점
커뮤니티에서는 프로젝트의 시각화 능력에 대해 긍정적인 평가를 내렸다. 특히, 대규모 데이터를 브라우저에서 처리하는 기술적 구현에 대한 관심이 높았다. 자전거 공유 서비스(Bike Sharing Service)의 데이터 공개 방식에 대한 논의도 있었으며, 다른 도시의 데이터 시각화 프로젝트에 대한 기대감도 나타났다. 멀티모달 분석(Multimodal Analysis)을 통해 데이터의 정확성을 높일 수 있다.