이번 주는 한동안 발이 묶여 있던 DanFish 의 안드로이드/웨어OS 자동 배포가 풀린 한 주였습니다. 거기에 더해서, 5월 11일에 박았다고 생각했던 정책 페이지 nginx 패치가 사실 절반밖에 적용되지 않았다는 사실까지 한 번에 발견됐고, 같은 날 박힌 김에 잔존 문제까지 통째로 정리했습니다. 단감의 1인 개발 일지, 오늘은 DanFish 한 프로젝트의 일주일을 그대로 펼쳐보겠습니다.
👋 오늘의 개발 근황
요즘 DanFish는 안드로이드 일반 앱과 별도로, 웨어OS(Wear OS) 시계용 앱이 함께 굴러갑니다. 시계에서 낚시 포인트 알림, 물때, 간조·만조 시각을 짧게 보여주는 작은 앱이에요. 일반 앱 빌드는 잘 돌아가는데, 웨어OS 쪽은 자동 배포가 한 달 가까이 꼬여 있었습니다. 이번 주에 그 매듭을 풀었고, 같은 주에 별개의 운영 사고 하나가 더 발견됐습니다. 두 사건이 같은 주에 동시에 정리되니 묘하게 후련합니다.
🎯 이 프로젝트는 무엇인가
DanFish는 한국 낚시인을 위한 지도 + 정보 서비스입니다. 어떤 자리가 좋은지, 물때가 어떤지, 그 시간에 어떤 어종이 나오는지를 한 화면에서 보여주는 게 핵심이에요. 웹은 fish.danmap.co.kr 에서 열 수 있고, 안드로이드 앱과 웨어OS 앱이 그 위에 얹혀 있는 구조입니다. 1인 개발이라 욕심을 줄여서, "현장에서 한 손으로 빠르게 볼 수 있게" 라는 한 가지 기준만 들고 만들고 있습니다.
최근 한 달은 웹·앱의 큰 기능 추가보다, 운영 안정성에 시간을 더 쓰는 시기입니다. 한 번 출시하고 끝이 아니라 매주 사용자가 들어오는 서비스다 보니, "오늘 하루 안 떨어지게 하기"가 신기능보다 훨씬 중요해졌어요.
🛠️ 이번 주 뭐가 바뀌었나
가장 큰 사건 두 가지를 정리합니다.
웨어OS 자동 배포 데드락 풀기. DanFish 웨어OS 앱은 GitHub Actions 워크플로우로 빌드해서 Google Play 콘솔에 자동 업로드되는 구조입니다. 그런데 한 달 가까이 이 파이프라인이 동작하지 않았어요. 처음엔 키스토어 권한 문제처럼 보였는데, 파고들수록 다른 원인이 차곡차곡 드러났습니다. 첫째, 자동 배포 워크플로우가 특정 브랜치 푸시에서만 트리거되도록 설정돼 있었습니다. 둘째, 리눅스 러너에서 빌드 스크립트의 실행 권한이 없어 빌드 자체가 막혔습니다. 셋째, 두 문제를 풀고 나니 이번엔 같은 버전 코드 중복 업로드 에러가 떠서 두 번째 푸시가 취소됐습니다. 한 줄 한 줄 패치하면서 결국 빌드부터 업로드 직전까지 모두 통과하는 상태로 돌려놨습니다.
한 달이나 묶여 있던 게 풀린 건, 결국 "원인 한 개가 아니라 세 개가 직렬로 걸려 있었다"는 사실을 인정한 다음이었어요. 1인 개발에서는 한 번에 모든 원인이 보이는 일이 드뭅니다. 하나 풀면 다음 게 보이고, 그걸 또 풀면 그 다음이 보이는 식이죠. 이번 일도 그랬습니다.
정책 페이지 301 리다이렉트 회귀 박멸. 5월 11일에 운영 서버 nginx 설정에 "/privacy 경로로 들어오면 /privacy-policy.html 로 영구 리다이렉트하는" 룰을 박았습니다. 단감의 모든 단XX 도메인이 정책 페이지를 같은 URL 패턴으로 갖도록 통일하는 작업이었어요. 그런데 5월 18일에 이게 9개 도메인 중 5개에만 실제로 적용돼 있었다는 사실이 발견됐습니다. DanFish, DanPet, DanWar, DanMare 4개가 빠져 있었던 거예요.
이게 왜 큰 문제냐면, DanFish는 이미 Play 스토어에 출시된 앱입니다. 앱 안에 박힌 정책 URL 이 빈 페이지로 뜨면 다음 Play 정책 재검토 때 거부될 수 있어요. 8일간 잠복해 있던 위험 한 가지를 같은 날 정리한 셈입니다. 적용 후에는 9개 도메인 모두에 같은 룰이 1줄씩 들어가 있는지 일괄 검증하고, 각 도메인의 /privacy 경로가 정확히 한 번 리다이렉트돼서 정상 본문이 뜨는지 끝까지 확인했습니다.
📸 화면으로 보는 변화
💭 만들면서 느낀 점
이번 주는 "다 됐다고 생각했는데 사실 다 안 돼 있었다"는 경험을 정확히 두 번 한 주입니다. 웨어OS 배포가 그랬고, 5월 11일 nginx 패치가 그랬어요. 두 사건 모두 자가 검증이 부족했다는 같은 원인이 있었습니다. 빌드가 한 번 성공한 걸 보고 "됐다" 라고 판단했고, nginx 설정 한 줄을 박은 걸 보고 "9개 도메인 다 됐다" 라고 판단했죠. 사실은 둘 다 절반쯤만 끝난 상태였습니다.
1인 개발의 가장 큰 위험은 "확인해 줄 사람이 나밖에 없다"는 점입니다. 회사에서는 동료가 한 번 더 봐주고, QA 가 한 번 더 돌리지만, 혼자서는 내가 박은 걸 내가 다시 검증해야 해요. 그 자가 검증을 한 번 빼먹는 순간 작은 빈틈이 며칠씩 잠복합니다. 이번 두 사건이 같은 주에 동시에 터진 게 우연이 아니라 같은 습관의 결과라는 걸 다시 한 번 새기게 됐습니다.
대신 이번 주의 좋은 점은, 같은 주에 두 번 다 끝까지 검증하면서 마쳤다는 거예요. nginx 9개 도메인 일괄 cross-check, 웨어OS 빌드의 끝 단계 로그까지 모두 확인. 작은 자기 단속이 다음 주 한 주를 가볍게 만듭니다. 그리고 이번 일을 계기로 단감 운영 원칙에도 "운영 패치는 영향받는 모든 도메인에 일괄 검증 의무"가 한 줄 더 박힐 예정입니다. 사고 한 번이 운영 원칙 한 줄을 더 단단하게 만드는 흐름, 이게 1인 개발의 작은 매력이기도 합니다.
🔗 직접 써보기
DanFish 는 별도 가입 없이 바로 지도와 정보를 둘러볼 수 있습니다. 낚시를 자주 다니지 않는 분이라도 한국 해안 지도와 물때 정보가 어떤 식으로 시각화되는지 구경 삼아 들러볼 만해요. 한 손으로 슥슥 넘기면서 보다 보면 의외로 흥미로운 자리들이 눈에 들어옵니다.
써보고 느낀 점이나 "이런 정보가 더 있었으면 좋겠다" 하는 의견이 있으시면 댓글로 편하게 남겨주세요. 1인 개발이라 모든 피드백이 다음 주 작업 우선순위에 그대로 반영됩니다. 다음 개발일지에선 이번 주 정리한 빌드 파이프라인 위에 어떤 작은 기능이 더 올라갔는지 들고 오겠습니다.
'단감의 개발일지' 카테고리의 다른 글
| 단감 DanFish 한 주 개발 근황 | 친지 카톡 피드백이 설계서 3건으로 박힌 이야기 (1) | 2026.05.29 |
|---|---|
| 단감이 만든 낚시 지도 DanFish, 4개월 묵은 376번 재시작 미스터리를 새벽에 풀었다 | 1인 개발 근황 (0) | 2026.05.25 |
| 단펫 5월 둘째주 1인 개발일지 | Google 로그인 0% 버그 핫픽스부터 beta 검토 제출까지 (0) | 2026.05.18 |
| 단펫 5월 첫 2주 1인 개발 일지 | Play Store 출시 자동화 96%와 로그인 0% 버그 핫픽스 후기 (0) | 2026.05.13 |
| 단감이 만든 글로벌 분쟁 모니터링 사이트 영문 버전 출시기 | 1인 개발 근황 (0) | 2026.05.08 |