데브허브 | DEVHUB | 복잡한 공간 데이터를 가볍고 빠르게 서빙하기 | 2025 당근 플랫폼 밋업복잡한 공간 데이터를 가볍고 빠르게 서빙하기 | 2025 당근 플랫폼 밋업
- 당근은 동네 인증, 중고 거래, 알바 등 다양한 서비스에 공간 데이터를 활용하며, 점, 선, 면으로 표현되는 공간 데이터의 중요성을 강조합니다. 📍
- 사용자 위치와 동네를 연결하는 동네 인증은 특정 좌표가 특정 영역 안에 있는지 판정하는 PP(Point-in-Polygon) 연산을 핵심적으로 사용합니다. 🎯
- 행정 구역은 정부에 의해 정의되지만, 편입, 개편, 신설 등으로 지속적으로 변경되며, 이는 동네 인증 및 결제 서비스에 예상치 못한 영향을 줄 수 있습니다. 🗺️
- 데이터의 안정적인 최신화를 위해 '선분 이력' 개념을 도입하여 버전을 관리하고, 특정 시점의 유효 데이터를 언제든 사용할 수 있도록 데이터 공급과 소비를 분리했습니다. ⏳
- 버전 분기를 위해 행정 구역 코드 변경뿐만 아니라, 영역 변화(예: 아파트 편입으로 인한 경계 조정)까지 감지하여 데이터의 변화를 식별합니다. 🔄
- 행정 구역 갱신 프로세스는 원천 주입, 단계별 처리, 현재 버전 비교를 거쳐 최종 버전을 생성하는 DAG 파이프라인으로 자동화하여 효율성을 높였습니다. ⚙️
- 아파트 영역 데이터는 입주민 커뮤니티, 알바, 부동산 매물 등 다양한 서비스에 활용되지만, 각 팀별 파편화로 인해 데이터 중복과 관리의 어려움이 발생했습니다. 🏘️
- 아파트 영역의 파편화 문제를 해결하기 위해 건물, POI, 주소, 공공 데이터 등을 활용하여 아파트 영역을 표준화하고, 이를 플랫폼 서비스로 제공하여 데이터 일관성을 확보했습니다. 📏
- 역세권 정보(지하철역까지의 도보 거리/시간)는 알바 구인글이나 부동산 매물에 중요하게 표시되지만, 실시간 길 찾기 연산은 계산 비용이 매우 높습니다. 🚇
- 역세권 최적화를 위해 '등시선도(Isochrone map)' 개념을 도입, 같은 시간에 도달 가능한 영역을 미리 계산하여 폴리곤으로 만들고, PP 연산으로 라이브 계산을 대체했습니다. ⏱️
- 등시선도 생성 시, 중첩되는 시간 영역을 제거하여 '양파껍질'처럼 정확히 N분 거리의 독립적인 시간 영역 폴리곤을 만드는 것이 핵심입니다. 🧅
- 이러한 사전 계산 영역 활용은 인덱싱 원리와 유사하게, 복잡한 공간 연산을 미리 준비해두고 빠르게 조회함으로써 비용을 절감하고 효율성을 극대화합니다. 🚀
- 당근은 행정 구역의 최신화(버전 관리), 아파트 데이터의 파편화(표준화), 역세권 정보의 최적화(사전 계산 영역) 문제를 성공적으로 해결했습니다. ✅
- 향후 버전 해상도, 자동화로 처리하기 어려운 폴리곤의 수동 처리 및 버전 관리, 메타데이터 변경 및 통계 데이터 연결을 위한 디프 확장 등 다양한 도전 과제가 남아있습니다. 💡
- 발표자는 이러한 공간 데이터 관련 도전 과제를 함께 해결할 GIS 엔지니어 및 관련 분야 전문가를 적극적으로 찾고 있습니다. 🤝