피드로 돌아가기
Dev.toFrontend
원문 읽기
개발자가 서버 없이 브라우저에서 대용량 GTFS 피드를 분석하는 TransitLens 도구를 구축한 사례
How I Built a Browser-Based GTFS Viewer That Runs Entirely Without a Server
AI 요약
Context
GTFS 피드는 정류장, 경로, 시간표 등의 대중교통 데이터를 담은 CSV 파일들의 ZIP 묶음이다. 기존 방식은 서버에 파일을 업로드해야 했지만, 기관들은 게시 전 일정 데이터를 외부에 공유하는 것을 우려했다. TransitLens는 JSZip으로 ZIP을 하고, 스트리밍 방식으로 CSV를 파싱하며, 필요 확장하는 인덱싱 전략으로 대용량 피드도 브라우저에서 처리한다.
Technical Solution
- GTFS 피드 → JSZip으로 브라우저 내에서 처리
- 대용량 CSV 파일 → 웹 워커에서 스트리밍 파싱으로 메인 스레드 부하 감소
- stop_times.txt 수백만 행 → 경로→여행→정류장 인덱스만 선제 생성, 실제 조회는 지연 처리
- 서비스 캘린더 → 일별 노선 수와 서비스 수준을 색상으로 시각화
- GeoJSON/KML 폴리곤 → 지도 위에 서비스 영역 경계를 오버레이
Impact
50MB 이상의 GTFS 피드도 브라우저에서 서버 없이 처리 가능
Key Takeaway
클라이언트 사이드 처리와 서버 사이드 처리 사이의 트레이드오프에서, 데이터 프라이버시 요구사항이 클라이언트 사이드 아키텍처를 정당화할 수 있다.
실천 포인트
대중교통 기관에서 게시 전 일정 데이터의 보안을 위해 외부 서버 업로드를 원치 않는 환경에서, JSZip과 스트리밍 CSV 파싱으로 브라우저 내에서 GTFS 피드를 解压缩하고, 지연 인덱싱 전략으로 메모리를 관리하여 서버 없이 대화형 지도 기반 분석 도구를 구현할 수 있다.