주말마다 "어디 가지?" 고민하다 만든 것 — Neo4j로 그린 서울 행사 지도

한 줄 요약
주말 나들이 장소를 고르는 일상적인 고민에서 출발해, **Neo4j 그래프 DB로 서울의 행사·장소·지역을 연결한 '온톨로지 기반 이벤트 지도'**를 만든 개발자의 이야기입니다. 아직 개발 중인 프로젝트지만, 컨셉 자체가 꽤 흥미롭습니다.
왜 만들었을까
제작자는 이렇게 시작을 설명합니다. 주말마다 배우자와 "오늘은 어디 갈까"를 고민하는 게 슬슬 힘들어졌다는 것. 기존 행사 찾기 서비스를 쓰다가 문득 이 도메인이야말로 온톨로지(ontology)와 잘 어울리겠다는 생각이 들었다고 합니다.
생각해 보면 일리가 있습니다. 행사 정보는 본질적으로 관계의 덩어리니까요.
- 이 행사는 어느 장소에서 열리는가
- 그 장소는 어느 지역에 속하는가
- 이 행사는 어떤 종류인가 (전시, 공연, 마켓...)
기존 서비스들이 주로 목록과 필터로 접근하는 정보를, 노드와 엣지의 그래프로 풀어낸 셈입니다.
제작자 본인은 "온톨로지라고 거창하게 썼지만 사실 그냥 Neo4j 활용한 게 다"라며 겸손하게 소개했지만, 도메인을 관계 중심으로 모델링했다는 점에서 방향성은 분명합니다.
어떤 기능이 있나
핵심은 클릭하며 관계를 따라가는 탐색입니다.
- 아무 노드나 클릭하면 연결된 장소·지역·행사 종류 노드가 엣지로 이어져 펼쳐집니다
- 지역 노드를 누르면 그 지역의 장소와 행사를 연달아 탐색할 수 있습니다
- 장소 기준으로 그곳에서 열리는 행사들을 한 번에 확인할 수 있습니다
- 우선 서울 위주로 작업 중이며,
서울 전체 → 지역 → 장소 → 행사순으로 좁혀 들어가거나, 거꾸로 확장해 나가는 방식도 가능합니다
마지막 양방향 탐색이 특히 눈에 띕니다. "성수동에 뭐 있지?"라고 지역에서 출발할 수도 있고, "이 전시 여는 곳 근처엔 또 뭐가 있지?"라고 행사에서 역으로 퍼져나갈 수도 있다는 뜻이니까요. 목적지가 정해진 검색과 정해지지 않은 산책, 둘 다 지원하는 구조입니다.
만들면서 어려웠던 점
제작자가 솔직하게 털어놓은 난관은 두 가지입니다.
- 노드 간의 관계 정의 — 무엇을 노드로 두고 무엇을 엣지로 둘지, 관계의 종류를 어디까지 쪼갤지는 그래프 모델링의 고전적인 난제입니다.
- 엣지 렌더링 — 그래프 시각화는 노드가 조금만 늘어나도 화면이 순식간에 스파게티가 됩니다. 레이아웃 알고리즘과 표시 범위 조절이 관건이죠.
"생각보다 어렵더라"는 말에 그래프 DB를 다뤄본 사람이라면 고개를 끄덕일 만한 대목입니다.
아직은 진행형
현재 상태를 제작자는 이렇게 정리합니다.
- 업데이트로 인한 변경이 잦음
- 데이터 정제가 아직 끝나지 않음
- 그래서 완성품 공개라기보다 "이런 컨셉의 지도가 배포될 예정"이라는 예고에 가까움
실제로 이런 서비스의 진짜 승부처는 데이터입니다. 행사 정보는 출처가 제각각이고, 같은 장소가 여러 이름으로 등록되고, 기간이 지나면 금방 낡습니다. 그래프 구조를 잘 짜놔도 들어가는 데이터가 지저분하면 엣지도 함께 지저분해지죠.
눈여겨볼 지점
이 프로젝트가 흥미로운 이유는 기술이 화려해서가 아니라, 개인의 실제 불편에서 출발해 적절한 도구를 골랐다는 점에 있습니다.
- 관계 탐색이 핵심인 도메인 → 그래프 DB는 자연스러운 선택
- 검색창에 키워드를 넣는 대신 둘러보다 발견하는 경험 설계
- 완성 전에 컨셉을 공개하고 피드백을 받는 접근
제작자는 "많은 피드백 부탁드린다"며 글을 맺었습니다. 그래프 시각화나 로컬 정보 서비스에 관심이 있다면, 지금 단계에서 의견을 보태기 좋은 타이밍입니다.
본 글은 GeekNews에 올라온 Show GN 게시글을 재구성한 것입니다.