KnotNet, Taker에서 Giver로 전환
November 18, 2025
아담 그랜트의 '기브 앤 테이크'라는 책을 읽었던 적이 있습니다. 책을 읽고도 실천 못하는건 여전한 것 같습니다. KnotNet의 모바일앱을 런칭하고 나서, 이제 푸쉬 메시지를 보낼 수 있게 되었으니 리텐션은 당연히 올라갈 것이라는 낙관적인 예측을 했습니다. 사용자의 기존 기록을 분석해서 추가 질문을 던지면, 개인화된 질문에 유저가 좀 더 기록을 할 것이라 생각했습니다. 겉보기엔 개인화된 것처럼 보이지만, 푸쉬에 따른 리텐션 증가는 거의 없었습니다. 좀 더 고민해보니 이 푸쉬 메시지는 사용자에게 무엇인가 더 하라고…
Vercel 롤백의 숨겨진 로직: 2시간의 삽질로 배운 교훈
October 18, 2025
문제의 시작 로컬에서 완벽하게 작동하는 코드를 Vercel에 배포했다. 몇 분 후 "Deployed Successfully" 메시지를 확인했다. 프로덕션 사이트를 열었다. 변경사항이 반영되지 않았다. "캐시인가?" 하드 리프레시를 했다. 여전히 이전 버전이다. "뭐지?" 디버깅의 시작 1차 시도: 코드 재확인 로컬과 프로덕션이 다르다면 코드 문제일 것이다. 코드를 다시 확인했다. 문제없다. 로컬에서는 완벽하게 작동한다. 2차 시도: 환경 변수 프로덕션 환경 변수가 잘못되었을 수도 있다. Vercel 대시보드에서 환경 변수를…
서버 드리븐 UI 도입과 롤백: 완벽한 아키텍처가 아닌 필요한 아키텍처
October 18, 2025
문제의 발견 KnotNet의 대시보드는 사용자가 작성한 노트 수에 따라 다른 인사이트 섹션을 보여준다. javascript // 프론트엔드에 하드코딩된 비즈니스 로직 {notes.length >= 2 && <Summary />} {notes.length >= 4 && <PatternInsights />} {notes.length >= 10 && <Discovery />} 각 섹션은 개별 API를 호출한다:…

October 15, 2025

October 14, 2025