01 / 만든 기록성심당 다음에 남는 빈 시간
대전에 관광객이 많이 찾아오는 이유를 생각하면 성심당을 빼놓기 어렵습니다. 그런데 빵을 사고 나서는 어디로 갈까요?
대전에 갈 만한 곳이 정말 없는 것일까? 저는 그게 궁금했습니다. 관광 관련 기사와 지역성을 다룬 논문을 찾아보니, 사람들이 흔히 말하는 '노잼도시'와는 별개로 대전에도 오래된 장소와 이야기가 있었습니다.
그래서 장소가 부족하다기보다 이미 있는 장소를 관광객과 연결하는 과정에 문제가 있는 것은 아닐까 하는 생각으로 시작했습니다.
성심당에 다녀온 사람이 다른 대전의 장소도 경험하게 만들 수 있을까?
02 / 만든 기록성심당을 나온 바로 그때
처음부터 대전 관광객 전체를 대상으로 잡지는 않았습니다. 성심당에서 빵을 구매하고, 다음에 어디로 갈지 정하지 못한 사람에게 먼저 써보게 하고 싶었습니다.
길게는 몇 시간씩 기다렸을 수도 있는 사람에게 관광지 수십 곳을 보여주고 직접 비교하라고 한다면 그것도 꽤 피곤한 일일 겁니다.
그래서 우선 하고 싶은 활동 하나를 고르게 하고, 가까운 장소 몇 곳과 짧은 이야기를 보여주는 방식으로 생각했습니다. 궁금한 장소가 생겼을 때만 상세 내용을 보고, 길찾기는 평소 쓰는 지도 앱으로 넘기는 것입니다.
제가 만들고 싶었던 것은 완벽한 여행 일정표가 아니라, 빵을 산 다음의 첫걸음을 조금 쉽게 만드는 도구였습니다.
03 / 만든 기록왜 100m이고, 왜 10곳인가?
처음부터 관광객에게 많은 장소를 보여주는 것이 좋은 방법일까 생각했습니다.
성심당에서 오랜 시간 기다리고 빵을 구매한 사람이 다시 수십 개의 장소를 비교하고 선택해야 한다면, 제가 만들려는 서비스도 결국 또 하나의 피로가 되지 않을까 싶었습니다.
그래서 처음에는 100m라는 가까운 거리부터 탐색하고, 마음에 드는 곳이 없다면 점차 범위를 넓히는 방향으로 정했습니다.
장소 역시 카테고리마다 최대 10곳으로 제한했습니다. 10이라는 숫자가 익숙하기도 했고, 부담 없이 둘러보기에도 적당하지 않을까 생각했습니다.
물론 이것은 제가 처음 설정한 기준일 뿐입니다. 실제로 사용하면서 거리가 너무 가깝지는 않은지, 10곳이 너무 많거나 적지는 않은지 확인해야 할 부분입니다.
또 한 가지 고민은 어떤 정보를 보여줄 것인가였습니다.
저는 장소의 평점이나 리뷰보다 그 장소에서 경험할 수 있는 것이 무엇인지 알려주고 싶었습니다. 그래서 장소마다 짧은 이야기를 붙이고, 궁금한 사람만 상세 내용을 확인하도록 했습니다.
결국 제가 중요하게 생각한 것은 많은 정보를 제공하는 것이 아니라, 관광객이 다음 장소를 선택하는 데 필요한 만큼의 정보만 제공하는 것이었습니다.
로그인이나 일정표 같은 기능을 제외한 이유도 같습니다.
04 / 만든 기록기획에서 개발까지
기획서를 작성한 뒤에는 FastAPI와 SQLite를 이용해 초기 MVP를 제작했습니다.
위치에 따라 장소를 분류하고, 선택한 카테고리의 장소를 보여주고, 상세 페이지에서 지도 앱으로 이동하는 구조였습니다.
만들고 나니 기획할 때는 생각하지 못했던 문제들이 나타났습니다.
GPS를 거부하거나 위치를 제대로 가져오지 못하는 경우, 검색 범위 안에 장소가 없는 경우, 추천을 다시 요청하는 경우 등 생각보다 고려해야 할 상황이 많았습니다.
기능을 하나 추가할 때마다 다른 기능과 충돌하는 경우도 있었습니다. SQLite 연결이나 GPS 안내 상태와 관련된 문제를 수정하고, 테스트를 다시 진행했습니다.
이후 Cloudflare Workers 기반으로 서비스를 옮기고 장소 데이터와 이야기, 이미지 등을 추가하면서 계속 개발하고 있습니다.
초기 MVP를 제작하는 과정과 실제 웹서비스를 운영하는 과정은 또 달랐습니다.
특히 장소 데이터는 숫자를 채우는 것보다 실제로 방문할 수 있는 장소인지, 위치와 정보가 정확한지 확인하는 일이 중요했습니다.
현재도 여러 기능을 추가하고 수정하는 중입니다.
05 / 만든 기록실제로 관광객이 이동했을까?
처음 기획할 때 가장 고민했던 부분 중 하나입니다.
추천을 보고 장소를 선택한 사람이 실제로 그곳에 방문했는지는 어떻게 확인할 수 있을까?
서비스 안에서 확인할 수 있는 것은 추천을 봤는지, 상세 내용을 열었는지, 지도 앱으로 이동하는 버튼을 눌렀는지 정도였습니다.
그 이후 실제로 길을 찾아갔는지, 장소에 도착했는지, 얼마나 머물렀는지는 알 수 없었습니다.
그래서 우선 제가 확인할 수 있는 것부터 실험해 보기로 했습니다.
초기 목표는 장소 선택률 50%, 지도 앱 선택률 30%, 유효 접속자 1,000명으로 정했습니다.
제가 설정한 첫 번째 실험 목표입니다.
그런데 여기서도 또 다른 궁금증이 생겼습니다.
장소를 선택한 이유는 가까워서였을까? 아니면 제가 작성한 짧은 이야기가 궁금증을 만들었기 때문일까?
거리가 멀어진다면 더 자세한 설명이 필요해질까?
이런 부분은 실제 사용자들의 행동을 확인하고 다시 고민해 볼 생각입니다.
결국 제가 처음 확인하고 싶은 것은 관광객에게 장소를 추천했을 때, 그 사람이 다음 장소에 관심을 가지고 이동을 시도하게 만들 수 있는가입니다.
USED TECHNOLOGIES
사용한 기술과 역할
처음 만든 FastAPI MVP와 지금 배포 중인 Workers 서비스는 구조가 조금 다릅니다. 둘 다 만들면서 사용한 기술입니다.
- 화면
- HTML · CSS · JavaScript카테고리 선택, 추천 카드, 상세 화면과 지도 앱 연결을 구현했습니다.
- 위치와 지도
- Geolocation API · Leaflet브라우저에서 위치를 가져오고, 초기 MVP의 지도를 표시했습니다.
- 첫 백엔드
- Python · FastAPI추천 요청과 사용자의 클릭 이벤트를 처리하는 API를 만들었습니다.
- 첫 데이터 저장
- SQLite · JSON장소 정보를 읽고 행동 이벤트를 저장했습니다. 장소 원본은 JSON으로 관리했습니다.
- 현재 웹서비스
- JavaScript · Cloudflare Workers · D1공개 서비스의 추천 요청을 처리하고, 장소 JSON을 읽어 제공하며, 이용 행동을 D1에 기록합니다.
- 테스트
- Python unittest · Node.js · Playwright거리 계산, 빈 추천 구간, 모의 GPS, 모바일 화면의 동작을 점검했습니다.
다음 기록: Keyboard Canvas →