오랜만에 개발일지로 인사드립니다. 저는 단감(Dangam)이라는 1인 회사를 운영하면서 단비즈(DanBiz)라는 전국 상권분석 웹서비스를 만들고 있습니다. 오늘은 단비즈가 5월 한 달 동안 어떤 부분을 다듬었는지, 한 발 떨어져서 천천히 정리해 보려고 합니다. 코드 자랑이 아니라 무엇을 왜 만들었고 어떤 결정이 가장 어려웠는지 위주로 적어 봅니다.
👋 오늘의 개발 근황
요즘 단비즈는 본격적으로 전국 17개 시도를 다 다루는 단계에 들어왔습니다. 처음 만들 때는 서울·부산 정도만 가지고 시작했는데, 데이터 수집기를 천천히 늘리면서 어느새 전국 단위로 점수를 매기는 서비스가 됐습니다. 5월 한 달은 그 전국 확장 과정에서 가장 자주 부딪힌 작은 사고들을 차분하게 정리한 시간이었습니다.
🎯 이 프로젝트는 무엇인가
단비즈는 전국의 동 단위로 상권 점수를 매겨 보여 주는 웹서비스입니다. 자영업을 준비하시는 분, 임대인분, 그리고 그냥 우리 동네가 상권으로서 얼마나 활기 있는지 궁금한 분 모두를 위한 무료 서비스입니다. 단순히 매출이 얼마인지 하나의 숫자만 보여 주지 않고, 점포 밀도·업종 다양성·경쟁 강도·상권 안정성·시장 규모(인구) 다섯 가지 차원으로 나누어 점수를 보여 줍니다. 한 동을 다른 동과 비교할 때, 어느 차원이 강하고 어느 차원이 약한지 직관적으로 보이도록 만든 것이 단비즈의 핵심입니다.
🛠️ 이번 주 뭐가 바뀌었나
5월 한 달 동안 단비즈에서 가장 의미 있었던 변화는 세 가지입니다.
1. 인구 점수가 전국 17개 시도 전체로 확장됐습니다
이전까지는 인구 점수가 서울·울산·세종·경기·전남 5개 시도에서만 정상적으로 나왔습니다. 사실 통계청 SGIS 데이터는 17개 시도 전체가 있었는데, 백엔드 코드가 옛 테이블만 가리키고 있어서 5개 시도만 노출되고 있었습니다. 이걸 데이터베이스의 새 테이블 위치로 옮겨 주는 작업으로, 부산·대구·인천·광주·대전·강원·제주가 한 번에 인구 점수를 가지게 됐습니다.
2. 일반구 합산 fallback — 수원·성남·청주 같은 대도시 11곳의 인구 점수가 정확해졌습니다
여기가 5월에 가장 자주 신경을 쓴 부분입니다. 수원시·성남시 같은 대도시는 그 안에 영통구·분당구처럼 일반구가 있습니다. 인구 통계는 일반구 단위로 저장돼 있는데, 단비즈는 시 단위로 인구를 찾기 때문에 매칭이 0%로 떨어지는 문제가 있었습니다. 이 부분을 시 단위로 합산해서 가져오는 캐시 헬퍼를 새로 만들었고, 결과적으로 수원시 122만 명, 성남시 90만 명, 청주시 87만 명 같은 큰 도시들의 인구 점수가 처음으로 정확하게 나오기 시작했습니다.
3. 작은 캐시 한 줄이 만든 큰 차이
같은 시도 안에서 동을 비교하는 흐름이 많다 보니, 같은 시도 인구 데이터를 30분 동안 메모리에 캐시해 두는 구조를 박았습니다. 이전에는 매 점수 조회마다 데이터베이스에 두 번씩 다녀오던 인구 조회가, 같은 시도 안에서는 처음 한 번만 다녀오게 됐습니다. 사용자가 느끼는 응답 속도 차이는 크지 않지만, 데이터베이스 입장에서는 부담이 꽤 줄었습니다.
📸 화면으로 보는 변화
💭 만들면서 느낀 점
5월의 가장 큰 깨달음은 데이터의 단위가 사용자가 생각하는 단위와 다를 수 있다는 점이었습니다. 사용자는 수원시 인구가 122만 명이라고 알고 있는데, 데이터는 영통구·권선구·팔달구·장안구 따로따로 저장돼 있습니다. 두 단위의 차이를 잘 흡수하지 못하면 "왜 수원시 인구 점수가 0이지?"라는 작은 균열이 사용자에게 곧장 보입니다. 이런 종류의 데이터 불일치는 코드를 잘 짜는 것만으로는 해결되지 않고, 실제 행정 단위 구조를 한 번 손으로 종이에 그려 보지 않으면 잘 안 보입니다.
또 하나는 캐시의 무서움입니다. 캐시는 잘 쓰면 데이터베이스를 많이 살려 주지만, 잘못 쓰면 사용자에게 옛날 데이터를 보여 주는 사고가 됩니다. 단비즈는 통계청 SGIS 데이터가 1년에 한 번만 갱신되기 때문에 30분 캐시가 안전한 편이지만, 그래도 운영 중에 캐시를 핫리셋할 수 있는 작은 엔드포인트는 꼭 만들어 두기로 했습니다. 1인 개발은 이런 작은 안전망 하나하나가 결국 본인 야근을 줄여 줍니다.
마지막으로 솔직한 회고입니다. 처음 단비즈를 시작할 때는 지도에 점만 찍어도 충분할 것이라고 생각했습니다. 그런데 사용자가 "이 동네가 어느 정도예요"라고 물어볼 때 한마디로 답하려면, 그 한마디 뒤에 다섯 가지 차원의 점수와 17개 시도의 데이터가 다 받쳐 줘야 합니다. 1인 개발은 그 받침대를 천천히 한 줄씩 쌓는 일이라는 걸 5월 한 달 동안 다시 한번 배웠습니다.
🔗 직접 써보기
단비즈는 누구나 무료로 쓸 수 있는 서비스입니다. 우리 동네 상권이 어느 정도인지, 새로 가게를 차리려는 동네의 점포 밀도와 업종 다양성이 어떤지 한 번 들여다보시면 좋겠습니다. DanBiz 단비즈 바로가기
써 보시다가 "이 부분은 이렇게 되면 좋겠다" 또는 "우리 동네 데이터가 비어 있네요" 같은 피드백이 있으시면 댓글로 편하게 남겨 주세요. 1인 개발자가 직접 다 읽고 다음 업데이트에 반영합니다. 다음 개발일지에서 또 만나요.
'단감의 개발일지' 카테고리의 다른 글
| 혼자 만드는 반려동물 산책 앱 단펫 근황 | 장소 탭 2만 곳 채우고 여름 산책 팝업까지, 1인 개발 일지 (0) | 2026.06.08 |
|---|---|
| 낚시 포인트 2,072개를 지도에 깔끔하게 | DanFish 지역 클러스터 출시기, 1인 개발 일지 (0) | 2026.06.05 |
| DanTravel 개발일지 | 자동화 워커가 6주 묵은 인증 부채를 찾아낸 6월 첫 월요일 (0) | 2026.06.01 |
| 단감 DanFish 한 주 개발 근황 | 친지 카톡 피드백이 설계서 3건으로 박힌 이야기 (1) | 2026.05.29 |
| 단감이 만든 낚시 지도 DanFish, 4개월 묵은 376번 재시작 미스터리를 새벽에 풀었다 | 1인 개발 근황 (0) | 2026.05.25 |