TECH 으로 돌아가기
TECH GITHUB 오늘 11분 읽기 32 READS

[심층분석] 내 여행 데이터를 내 서버에: 셀프호스팅 여행 플래너 TREK 뜯어보기

[심층분석] 내 여행 데이터를 내 서버에: 셀프호스팅 여행 플래너 TREK 뜯어보기

여행 계획 앱, 왜 또 새로 만들었을까요?

여행 갈 때 다들 어떻게 계획 세우세요? 저는 보통 구글 지도에 별표 찍고, 노션에 일정 적고, 항공권 이메일은 메일함 어딘가에 묻혀 있고, 친구랑 정산은 카톡으로 "누가 얼마 냈더라" 하면서 하거든요. 여행 하나 가는데 앱을 대여섯 개씩 왔다 갔다 하는 거죠.

오늘 소개할 TREK은 바로 이 흩어진 것들을 한곳에 모은 여행 플래너예요. 지도, 예산, 짐 싸기 체크리스트, 여행 일지, 예약 관리, 거기다 AI까지 한 앱에 다 들어있어요. 그런데 진짜 핵심은 따로 있어요. 바로 "셀프호스팅(self-hosted)" 이라는 점이에요.

셀프호스팅이 뭐냐면, 쉽게 말해서 남의 회사 서버가 아니라 내 서버(또는 내 컴퓨터)에 직접 깔아서 쓰는 것을 말해요. 우리가 평소 쓰는 구글 지도나 트립닷컴은 내 여행 정보가 전부 그 회사 서버에 저장되잖아요. 반면 TREK은 내가 직접 설치하니까 내 여행 데이터, 항공권 정보, 숙소 예약번호가 전부 내 손안에 남아요. 요즘 "내 데이터는 내가 갖겠다"는 사람들이 늘면서 이런 셀프호스팅 도구가 하나의 흐름이 됐는데, TREK은 그 흐름이 여행 분야까지 왔다는 신호인 셈이에요.

기술적으로 뜯어보면

저장소 구조를 보면 client(화면), server(서버), shared(공통 코드)로 나뉜 전형적인 풀스택 웹앱이에요. 여기서 눈여겨볼 기술 포인트를 하나씩 풀어볼게요.

1) 실시간 협업 — "여행계의 구글 독스"

TREK의 간판 기능은 실시간 동기화예요. 친구가 일정에 맛집 하나를 추가하면, 같이 보고 있는 내 화면에도 즉시 뜨거든요. 이걸 가능하게 하는 게 WebSocket(웹소켓) 이라는 기술이에요.

웹소켓이 뭐냐면요. 보통 웹페이지는 내가 "새로고침" 같은 요청을 보내야 서버가 답을 주는 구조예요. 손님이 물어봐야만 대답하는 식당 같은 거죠. 그런데 웹소켓은 서버와 브라우저 사이에 전화선을 하나 깔아두는 방식이에요. 한번 연결해두면 서버가 "방금 누가 일정 바꿨어!" 하고 먼저 말을 걸 수 있어요. 그래서 새로고침 없이도 변경 사항이 실시간으로 쫙 퍼지는 거예요. 구글 독스에서 다른 사람 커서가 움직이는 게 보이는 거랑 똑같은 원리예요.

여러 명이 같은 여행을 함께 짜는데, 한 명은 숙소를 알아보고 한 명은 맛집을 찾고… 이게 따로 노는 게 아니라 한 화면에서 실시간으로 합쳐지니까 단톡방에서 "내가 이거 추가했어" 하고 일일이 말할 필요가 없어지는 거죠.

2) 지도 — Leaflet과 Mapbox GL 중 골라 쓰기

TREK은 지도 엔진을 두 가지 중에 고를 수 있어요. LeafletMapbox GL인데, 이 둘의 차이를 쉽게 비유하자면 이래요.

TREK이 영리한 건, 셀프호스팅의 약점인 '기능 부족'을 안 보이게 했다는 점이에요. Splitwise 스타일 비용 정산(1/N 정산, 다중 통화), 예약 이메일·PDF에서 항공·숙소 정보 자동 추출(KDE Itinerary 활용), 짐 무게 추적, PDF로 전체 일정 내보내기까지 — 상용 앱 여러 개를 합쳐야 나오는 기능을 한 통에 다 넣었거든요.

한국 개발자에게 주는 시사점

한국 사용자 입장에서 제일 반가운 건 따로 있어요. 바로 네이버 지도 리스트 가져오기를 지원한다는 점이에요. 보통 이런 해외 오픈소스는 구글 지도만 챙기는데, 공유된 네이버 지도 목록은 물론 GPX·KML·GeoJSON 같은 지도 파일까지 불러올 수 있어요. 국내 맛집 리스트를 네이버에서 정리한 다음 그대로 끌어올 수 있다는 거예요.

실무에 어떻게 써볼 수 있을까요? 몇 가지 시나리오를 그려볼게요.

1. 동아리·회사 워크샵 간사라면, 라즈베리파이나 작은 클라우드 서버에 Docker로 한 번 올려두고 팀원 전체를 초대하세요. docker-compose.yml이 제공되니 명령어 한 줄로 띄울 수 있어요. 단톡방 정산 다툼이 사라집니다.
2. 셀프호스팅 입문자라면, TREK은 좋은 연습 교재예요. WebSocket 실시간 동기화, PWA 오프라인 처리, 지도 API 연동, SSO 인증 — 현업에서 자주 쓰는 기술이 한 프로젝트에 다 모여 있거든요. 코드를 읽으면서 "실시간 기능은 이렇게 구현하는구나"를 배우기 좋아요.
3. 사이드 프로젝트를 구상 중이라면, MCP 연동 부분을 참고하세요. AI를 앱에 붙이는 '표준적인 방법'이 실제 코드로 어떻게 생겼는지 살아있는 예시를 볼 수 있어요.

도입할 때 고려할 점도 짚어둘게요. 셀프호스팅은 공짜처럼 보여도 서버 관리라는 숙제가 따라와요. 보안 업데이트, 백업, 도메인·HTTPS 설정은 직접 챙겨야 해요. 또 Mapbox나 Google Places의 화려한 기능을 쓰려면 API 키와 비용이 들 수 있으니, 처음엔 무료 조합(OpenStreetMap + Open-Meteo 날씨)으로 시작해보는 걸 추천해요.

마무리하며

TREK이 보여주는 큰 그림은 "내 데이터를 내가 통제하는 시대"가 점점 현실이 되고 있다는 거예요. 예전엔 셀프호스팅이라 하면 기능이 투박하고 설치가 어려웠는데, 이젠 Docker 한 줄로 띄우고 상용 앱 부럽지 않은 기능에 AI까지 얹는 수준이 됐어요. 이 흐름은 여행 앱을 넘어 가계부, 노트, 사진첩 등 우리 일상 곳곳으로 번질 거라고 봐요.

여러분은 어떠세요? 편하지만 내 데이터를 내주는 상용 서비스가 좋으세요, 아니면 좀 번거로워도 내 서버에 직접 올려 데이터를 지키는 쪽이 끌리세요? 혹시 이미 셀프호스팅으로 굴리고 있는 도구가 있다면 댓글로 자랑해주세요. 다음 여행 계획은 TREK으로 한번 짜보는 것도 재밌겠네요!


🔗 출처: GitHub

SOURCE · GITHUB
원문 전체 보기 → https://github.com/mauriceboe/TREK
SHARE
처리 중...