본문 바로가기

단감의 개발일지

1인 개발 여행앱 코드 부채 상환기 2026 — 다섯 번 미룬 취약점 갚고 테스트가 버그를 진짜 잡는지 검증하기

혼자 여행 서비스를 만들다 보면, 급한 기능에 밀려 "다음에 고치자"고 적어만 두는 코드가 쌓입니다. 이번 주 DanTravel(단여행)에서는 그렇게 다섯 번이나 미뤄 둔 자잘한 취약점을 드디어 갚고, 한 발 더 나아가 테스트가 진짜로 버그를 잡는지까지 확인했습니다.

👋 오늘의 개발 근황

DanTravel은 지도에서 관광지·맛집·숙소·축제를 찾아보고, 지역과 일수·테마만 고르면 AI가 여행 코스를 자동으로 짜 주는 웹 서비스입니다. 배포 이후 4주 동안은 새 기능을 늘리기보다 "이미 만든 것이 조용히 망가지지 않게" 지키는 일에 집중하고 있습니다.

🎯 이 프로젝트는 무엇인가

사용자 입장에서 DanTravel의 경험은 크게 두 갈래입니다. 하나는 '말하면 코스가 나온다' — 지역·일정·테마를 입력하면 AI가 하루 동선을 묶어 일정표로 만들어 줍니다. 다른 하나는 '물어보면 공공데이터 근거로 답한다' — 챗봇에게 물으면 관광공사·교통공사 같은 공공데이터를 근거 카드로 붙여 답합니다.

혼자 개발하다 보니 화면 하나가 조용히 깨지면 알아채기까지 며칠이 걸립니다. 그래서 요즘은 기능을 늘리기보다 깨짐을 자동으로 감지하는 안전장치를 두껍게 쌓는 쪽에 시간을 씁니다.

🛠️ 이번 주 뭐가 바뀌었나

지난 다섯 번의 작업은 매번 '취약점 몇 건 남음 — 다음에 같이 고치자'라고 기록만 하고 넘어갔습니다. 감시 코드는 두꺼워졌지만 정작 취약점은 그대로였죠. 감시는 터질 때 알려 줄 뿐, 막아 주지는 않으니까요.

  • 맛집·숙소 카드가 서버 응답의 특정 필드를 안전 접근 없이 읽던 네 곳을 모두 방어 코드로 바꿨습니다. 서버가 그 값을 빼는 날 카드가 통째로 죽는 단일 실패점이었습니다.
  • 챗봇 근거 카드의 주소값이 비어 있을 때 다른 필드들과 처리 방식이 달라, '값 없음'이 두 가지 형태로 섞이던 문제를 하나로 통일했습니다.
  • 서버가 시드 데이터를 '운영 중'으로 둔갑시키지 않도록, 출처 표기의 정직성을 판단하는 함수를 실제로 실행해 검사하는 테스트를 새로 넣었습니다.

📸 화면으로 보는 변화

아래는 이번 주 점검한 DanTravel 실제 화면입니다. 지도 위 장소 검색과 '주변 장소 50곳' 목록이 나오는 첫 화면으로, 맛집·숙소 카드가 바로 이 데이터를 읽어 그립니다.

💭 만들면서 느낀 점

가장 크게 배운 건 '테스트를 믿으려면 테스트부터 의심해야 한다'는 것이었습니다. 이번엔 고친 코드를 일부러 되돌린 복사본을 일곱 가지 만들어, 테스트가 그 되돌림을 전부 잡아내는지 확인했습니다. 일곱 개 모두 빨간불이 떴을 때에야 비로소 '이 테스트는 진짜로 지키고 있다'고 안심할 수 있었습니다.

부채에는 이자가 붙습니다. 미룰 때마다 감시 코드는 늘고, 정작 원인은 그대로라 나중엔 뭘 왜 감시하는지도 헷갈립니다. 두 줄짜리 수정을 다섯 번 미룬 대가였습니다.

🔗 직접 써보기

여행 코스를 자동으로 짜 보고 싶다면 아래 링크에서 직접 써 볼 수 있습니다.

DanTravel 바로가기

반응형