RSS DEV 커뮤니티

PathCraft 구축: Go에서 제공하는 오픈 소스 라우팅 엔진

PathCraft는 Go로 구축된 모듈형 오픈 소스 라우팅 엔진으로, 벤더 종속 없이 이해, 확장 및 배포를 위해 설계되었습니다. 재사용 가능한 라이브러리, CLI 애플리케이션, HTTP 서버 및 임베디드 엔진으로 작동합니다. 핵심 철학은 순수한 성능보다 정확성을 우선시하며, 명확한 아키텍처를 통해 가독성과 유지 관리성을 강조합니다. 선택된 기술 스택은 Go의 성능, 단순성 및 동시성 기능을 활용합니다. PathCraft의 구조는 모듈형 모놀리스를 구성하며, 코드를 /internal, /graph, /osm, /gtfs, /pkg/pathcraft/engine과 같은 개별 모듈로 나누어 공개 API를 제공합니다. 보행 라우터는 Haversine 거리 휴리스틱과 결합된 사용자 정의 A* 검색 구현을 사용합니다. 대중교통 라우팅은 RAPTOR 알고리즘을 활용하여 시간표 데이터를 직접 사용하여 효율적인 경로 탐색을 수행합니다. 엔진의 공개 API는 라우팅 프로세스를 조율하는 Engine 구조체로, 알고리즘 관련 세부 사항을 피합니다. 개발 원칙에는 순수하고 결정적인 핵심 알고리즘, 테스트 가능성, 그리고 조기 추상화 회피가 포함되었습니다. PathCraft는 현재 OSM 파싱, A* 라우팅, CLI 인터페이스 및 GTFS 섭취를 지원합니다. 이 프로젝트는 향후 보행 + 대중교통 통합, 시간 종속 라우팅 및 성능 벤치마킹을 목표로 합니다. 저자는 단순하게 시작하는 것, 툴링에 투자하는 것, 설계를 위한 문서화, 그리고 데이터 관리가 가장 큰 과제를 제시한다는 것을 배웠습니다.
favicon
dev.to
Building PathCraft: An Open-Source Routing Engine in Go
기사 이미지: PathCraft 구축: Go에서 제공하는 오픈 소스 라우팅 엔진