사이드 프로젝트 4개를 접고 배운 것들
BrainFit이 32개 미니게임이 들어간 두뇌 훈련 RPG가 되고, BloomCard가 정원 테마 플래시카드 앱이 되기 전에, 나는 약 2년 동안 아무도 원하지 않는 것들을 만들었다. 정확히 네 개의 사이드 프로젝트. 각각 진심으로 열정을 쏟았고, 실제 개발 시간을 투자했고, 결국 전부 접었다.
겸손한 척하면서 실패를 자랑하는 글이 아니다. 이 프로젝트들은 진짜로 실패했다. 하지만 실패하면서 쌓은 기술적 판단력, 시장 감각, 제품 직관이 지금 출시하고 있는 모든 것의 기반이 되었다. 초기 단계에서 뭘 만들어야 할지 고민하고 있는 인디 개발자라면, 내 실수가 시간을 좀 아껴줄 수 있길 바란다.
프로젝트 1: OGmake — 아무도 필요하지 않았던 OG 이미지 생성기
무엇이었나
OGmake는 Open Graph 이미지를 자동 생성하는 API/SaaS가 될 예정이었다. 트위터나 슬랙에서 링크를 공유하면 뜨는 미리보기 카드 있지 않나. 그걸 깔끔하고 브랜딩된 형태로 자동 생성해주는 서비스를 만들고 싶었다.
아이디어의 출발은 내 경험이었다. 사이드 프로젝트를 런칭할 때마다 Figma에서 OG 이미지를 만들고, 내보내고, 플랫폼별로 제대로 렌더링되는지 확인하는 데 말도 안 되는 시간을 쓰고 있었다. 분명 다른 개발자들도 같은 고통을 느끼고 있을 거라고 생각했다.
어디까지 만들었나
템플릿 시스템, 파라미터를 받아 PNG를 반환하는 API 엔드포인트, 템플릿 관리를 위한 기본 대시보드까지 작동하는 프로토타입을 만들었다. 기술적으로는 Vercel의 @vercel/og를 기반으로 Satori로 SVG 렌더링하는 방식이었다. 템플릿 5개를 준비하고 가격 페이지 초안까지 작성했다.
마케팅 리서치도 꽤 했다. 4단계, 7개월짜리 Product Hunt 런칭 로드맵을 짰다. BOFU(Bottom of Funnel) 키워드를 타겟으로 한 SEO 전략을 세웠다. 무료 OG Image Previewer 도구로 개발자를 유입시키고 유료 생성 API로 전환시키는 PLG 퍼널도 설계했다.
왜 접었나
솔직하게 다른 프로젝트 아이디어들과 비교 평가를 했더니, OGmake는 16개 후보 중 8위였다. 이유는 치명적이었다.
"있으면 좋은 것"이지, "없으면 안 되는 것"이 아니었다. 어떤 개발자도 OG 이미지 때문에 잠을 설치지 않는다. 만들기 귀찮은 건 맞지만, 귀찮은 것과 고통스러운 것은 다르다. 고통은 프로덕션에서 앱이 터지는 거다. 귀찮은 건 Figma를 5분 여는 거다.
무료 대안이 넘쳐났다. Vercel OG는 무료이고 Next.js에 내장되어 있다. Canva로도 소셜 이미지를 만들 수 있다. 대부분의 모던 프레임워크는 어떤 형태로든 OG 이미지 지원이 있다. 이미 무료 약을 나눠주고 있는 병원에서 약을 팔려고 한 셈이다.
매출 천장이 낮았다. 가장 낙관적인 3개월 후 예측이 MRR $300~$1,000이었다. 같은 기간에 $500~$3,000을 예측하는 다른 아이디어들과 비교하면 매력이 없었다. 솔로 개발자에게 기회비용은 곧 생존이다.
OGmake는 마케팅 카피 한 줄 쓰기도 전에 접었다. 올바른 결정이었고, 감이 아니라 점수 체계로 프로젝트를 판단한 첫 번째 경험이었다.
프로젝트 2: QRPulse — 도착하기도 전에 죽은 QR 코드 앱
무엇이었나
QRPulse는 스캔 분석 기능이 달린 QR 코드 생성기였다. QR 코드를 만들고, 누가 스캔하는지 추적하고, 지역별/시간별 데이터를 보고, 월 $8를 내는 구조였다.
어디까지 만들었나
이건 실제로 MVP까지 완성했다. 커스텀 디자인 QR 코드 생성, 배포, 스캔 횟수/위치/시간을 보여주는 기본 분석 대시보드까지 전부 작동했다. 프론트엔드도 깔끔하고, 백엔드도 잘 돌아가고, 솔직히 엔지니어링에 자부심이 있었다.
왜 접었나
QRPulse가 가르쳐준 교훈은 네 프로젝트 중 가장 뼈아팠다: 작동하는 제품은 시장이 원하지 않으면 아무 의미가 없다.
SEO 지형이 악몽이었다. 노리는 키워드마다 Domain Rating 90 이상의 사이트가 상위를 독점하고 있었다 — QRCode Monkey, Flowcode, Uniqode, Bitly. 스타트업이 아니다. 방대한 백링크 프로필과 수년간의 콘텐츠 권위를 가진 기업들이다. 신생 도메인의 솔로 개발자가 DR 90 사이트를 상대로 "QR code generator"에서 순위를 따낼 확률은 정확히 0이다.
하지만 SEO 문제는 더 깊은 문제의 증상일 뿐이었다: 반복적인 가치 제안이 없었다. 사람들은 QR 코드를 한 번 만들면 끝이다. 분석을 한두 번 확인할 수도 있다. 하지만 QR 코드 자체를 무료로 만들 수 있는 사이트가 수십 개인 상황에서, 그것만으로 월 $8의 구독을 정당화할 수는 없었다.
피봇 아이디어도 여러 개 검토했다 — 일회성 결제 모델, 레스토랑/이벤트 타겟 B2B 니치, API 우선 접근, 화이트라벨 — 하지만 어느 것도 근본적인 문제를 해결하지 못했다. 기술적 해자(moat)가 없었다. 누구나 QR 코드 생성기를 주말에 만들 수 있었다. 그리고 많은 사람이 이미 만들었다.
결정을 확정한 숫자들
현실적인 6개월 후 예측: 50% 확률로 MRR $100~$300. 의미 있는 수익인 월 $2,000 이상은 "매우 어려움"으로 분류되었다. 최선의 시나리오에 "매우"라는 수식어가 붙으면, 다음으로 넘어갈 때다.
프로젝트 3: 모바일 앱 미궁 — 아이디어 5개, 출시 0개
무엇이었나
하나의 프로젝트가 아니라 몇 주를 잡아먹은 리서치 단계였다. 모바일 앱 시장의 헤드라인 숫자 — 글로벌 1.2조 달러 — 에 현혹되어 구독형 앱 아이디어를 평가하기 시작했다:
- AI 기반 감정 일기
- 영수증 스캐너 겸 가계부
- AI 칼로리 인식 카메라
- 소셜 습관 트래커
- 단위 변환기 (맞다, 진짜)
모바일 앱 시장, 구독 경제학, 구독 피로 현상에 대한 심층 리서치에 상당한 시간을 투자했다. 상세한 재무 모델을 만들고, 경쟁사 가격을 분석하고, 이탈률을 연구하고, 기술 아키텍처를 설계했다.
어디까지 만들었나
프로토타입은 단 하나도 안 만들었다. 하지만 아이러니하게도, 꼼꼼하게 작성한 시장 리서치 문서가 나를 이 카테고리 전체에서 손을 떼게 만들었다.
왜 접었나
리서치 결과는 냉정했다.
수학이 잔인하다. 상위 5%의 앱만 의미 있는 수익(월 $8,880 이상)을 올린다. 하위 25%는 $19 이하. 전체 앱의 80%가 월 $1,000 미만. 이건 시장이 아니라 추가 절차가 있는 복권이다.
구독 피로는 실재하고 가속화되고 있다. 소비자의 절반 이상이 구독 피로를 호소한다. 한국에서는 유튜브 프리미엄 가격이 71.5% 올랐고, 쿠팡 와우 멤버십은 58% 인상됐고, 티빙의 계정 공유 금지 조치는 고객 상담을 315% 폭증시켰다. 사람들은 새 구독에 대해 적극적으로 적대적이다.
내 뇌를 부순 역설: 소비자들은 구독에 불만을 토로하면서 앱 구독 지출은 전년 대비 33.9% 증가했다. 사람들은 구독이 싫다고 말하면서 더 많은 것에 구독한다. 이 말은 "구독 피로"가 시장 기회가 아니라는 뜻이다 — 사람들이 있다고 주장하지만 실제로는 없는 문제를 해결하는 제품을 만들 수는 없다.
이 리서치 단계에서 가장 중요한 인사이트는 노트에 적은 한 문장이었다: "불만이 있다고 돈이 되는 건 아니다." 이건 지금도 모든 제품 아이디어에 적용하는 필터다.
솔로 개발자의 포트폴리오 전략도 살펴봤다 — 30개 이상의 작은 앱을 만들어 리스크를 분산시키는 방식으로 월 $60K를 버는 인디 개발자 사례. 하지만 그 접근법은 품질을 유지하면서는 감당할 수 없는 볼륨과 속도를 요구했다.
뭐가 남았나
모바일 앱 방향 자체는 접었지만, 리서치는 낭비가 아니었다. 구독 피로 데이터는 BrainFit과 BloomCard의 수익화 설계에 직접적인 영향을 미쳤다. 무료 티어를 진짜로 유용하게 만드는 것, 돈을 요구하기 전에 프리미엄의 가치를 명확히 보여주는 것, 착취적으로 느껴지지 않는 가격을 제시하는 것에 집착하게 되었다. 이 프로젝트들을 거치며 다듬은 수익화 프레임워크는 이 글에서 자세히 다뤘다.
프로젝트 4: CalcViral — 피봇해서 살아남은 놈
무엇이었나
CalcViral은 광고 수익 기반 계산기 니치에 대한 직관적인 베팅으로 시작했다. 가설은 이랬다: 고CPC 키워드(법률, 금융, 보험)를 타겟으로 한 계산기 모음을 만들고, 바이럴 퀴즈를 붙여서 트래픽 폭증을 노린다. 하나의 도메인에 두 개의 트랙 — SEO로 안정 수익을 만드는 도구와, 폭발적이지만 일시적인 트래픽을 위한 퀴즈.
어디까지 만들었나
이건 실제로 만들어서 배포했다. CalcViral은 전성기에 20개의 계산기를 갖추고 있었다 — 금융(복리 계산기, 모기지, 프리랜서 세금), 법률(양육비, 위자료, 이혼 비용, 50개 주별 LLC 비용), 건강(BMI, TDEE), 주거(30개 이상 도시별 리모델링 비용), 수학 유틸리티, 단위 변환기. 여기에 10개의 두뇌 테스트와 퀴즈도 있었다 — 색각 테스트, 반응 속도, CPS 테스트, 기억력 테스트, 숫자 기억력, 패턴 IQ, 타이핑 속도, 침팬지 테스트, 성격 테스트.
기술 스택도 진지했다: Next.js App Router, React, Tailwind CSS, 3개 국어(영어, 독일어, 스페인어)를 위한 next-intl, 퀴즈 결과 공유와 프리미엄 주문을 위한 Supabase, 결제를 위한 Lemon Squeezy, 광고를 위한 AdSense, 호스팅을 위한 Cloudflare Workers. 프로그래매틱 SEO로 1,000페이지 이상을 생성했다 — 도구 곱하기 50개 주, 리모델링 비용 곱하기 30개 도시, 전부 3개 로케일. 동적 OG 이미지, JSON-LD 구조화 데이터, 쿠키 동의 시스템, 장문 블로그 포스트 5개까지 갖췄다.
프리미엄 제품도 있었다: jsPDF로 생성하고 Resend 이메일로 전달하는 5페이지짜리 성격 분석 리포트, $9.99.
왜 적극적 개발을 멈췄나
CalcViral은 여전히 calcviral.9-87.org에서 운영 중이지만, 적극적으로 개발 시간을 투입하는 것은 멈췄다. 이유는 이렇다:
고CPC의 꿈이 충분히 빨리 실현되지 않았다. 법률 계산기의 클릭당 $50~$150이라는 숫자는 종이 위에서는 환상적이다. 현실에서는 그 키워드들이 확고한 권위 사이트들에 의해 지배되고 있다. 주정부 웹사이트와 법률 대기업을 상대로 "child support calculator California"에서 경쟁하는 신생 도메인은 총싸움에 칼 들고 나가는 격이다.
바이럴 퀴즈 전략은 끊임없는 콘텐츠 생산을 요구했다. 바이럴 콘텐츠는 정의상 일시적이다. 각 퀴즈가 트래픽 스파이크를 만들 수 있지만, 스파이크는 며칠 안에 사라진다. 트래픽을 유지하려면 콘텐츠 러닝머신이 필요하다 — 항상 다음 바이럴 아이템을 생산해야 한다. 그건 소프트웨어 제품이 아니라 미디어 회사다.
하지만 핵심 인사이트는 이것이었다: 두뇌 테스트가 사이트에서 가장 몰입도 높은 부분이었다. 반응 속도 테스트, 기억력 테스트, 패턴 IQ 퀴즈 — 이것들이 사용자가 가장 오래 머물고, 가장 자주 돌아오고, 결과를 가장 많이 공유하는 페이지였다. 계산기는 유틸리티였다. 두뇌 테스트는 경험이었다.
그 깨달음이 BrainFit의 씨앗이 되었다.
반복된 실패 패턴
네 프로젝트를 관통하는 세 가지 패턴이 있다:
패턴 1: 남의 문제가 아니라 내 문제를 풀고 있었다
OGmake는 OG 이미지에 대한 내 귀찮음에서 태어났다. 모바일 앱 아이디어들은 일기 쓰기와 건강 관리에 대한 내 개인적 관심에서 나왔다. 전형적인 "자기 가려운 곳 긁기" 프로젝트들이고, 인디 개발 커뮤니티는 이 접근법을 좋아한다. 하지만 문제가 있다: 내 가려움은 약했다. 약한 가려움으로는 돈을 낼 의사가 있는 고객이 생기지 않는다.
살아남은 프로젝트들 — BrainFit으로 진화한 CalcViral의 두뇌 테스트, BloomCard가 된 플래시카드 메커닉 — 은 더 보편적인 것을 다뤘기 때문에 성공했다. 모든 사람은 더 똑똑해지고 싶다. 모든 사람에게는 외워야 할 것이 있다. 이건 개발자만의 니치한 불편함이 아니라 인간의 욕구다.
패턴 2: 검증 전에 과도하게 만들었다
QRPulse에는 커스텀 분석 대시보드가 있었다. OGmake에는 템플릿 관리 시스템이 있었다. CalcViral에는 1,000페이지 이상을 생성하는 프로그래매틱 SEO가 있었다. 매번, 심플한 버전을 누군가 원하는지 확인하기도 전에 정교한 버전을 만들었다.
BrainFit과 BloomCard에서는 이 패턴을 완전히 뒤집었다. BrainFit은 하드코딩된 난이도 커브를 가진 단일 반응 속도 게임으로 시작했다. 사람들에게 보여줬다. 한 번 이상 플레이했다. 그제서야 Elo 레이팅 시스템, RPG 성장 구조, 32개 게임 로스터를 만들었다. BloomCard는 정원 메타포를 위에 씌운 최소한의 플래시카드 앱으로 시작했다. 사람들이 정원이 자라는 걸 보는 것을 좋아했다. 그제서야 FSRS 간격 반복, 커스텀 카드 페인터, 전체 보상 시스템을 구현했다.
패턴 3: 처음부터 명확한 대상이 없었다
OGmake를 누가 쓰나? "개발자"는 시장 세그먼트가 아니라 직업명이다. QRPulse를 누가 쓰나? "QR 코드를 쓰는 기업"은 모든 사람이자 아무도 아니다. AI 감정 일기에 누가 구독하나? 이 질문에 진지하게 답할 수 없었고, 그래서 만들지 않았다.
BrainFit과 비교해보자: 두뇌 훈련 게임을 즐기고 인지 능력 향상을 추적하고 싶은 사람들. 또는 BloomCard: 시각적 보상 시스템이 있는 간격 반복을 원하는 언어 학습자와 학생들. 이 대상들은 찾아서 서비스할 수 있을 만큼 구체적이고, 비즈니스를 유지할 수 있을 만큼 넓다.
살아남은 기술 스택
전부 낭비된 건 아니었다. 사실 실패한 프로젝트들에서 쌓은 기술적 기반이 BrainFit과 BloomCard의 뼈대가 되었다:
Flutter와 Dart. 모바일 앱 리서치 단계에서 Flutter를 배우기 시작했다. 다섯 개의 앱 아이디어 중 하나도 출시되지 않았지만, 프레임워크 전문성이 BrainFit과 BloomCard를 직접 가능하게 만들었다. 둘 다 Flutter 앱이고, Dart, 위젯 컴포지션, 플랫폼별 적응에 대한 나의 숙련도는 빛을 보지 못한 프로젝트들을 몇 달간 만지작거리면서 쌓은 것이다.
Supabase. CalcViral은 퀴즈 결과 공유와 주문 추적에 Supabase를 썼다. QRPulse는 분석 데이터 저장에 썼다. BrainFit과 BloomCard를 만들 때쯤에는 스키마 설계, Row Level Security, 실시간 구독에 대한 확고한 의견이 있었다. 실패한 프로젝트에서 확립한 백엔드 패턴이 그대로 이전되었다.
RevenueCat. 모바일 앱 리서치 단계에서 구독 경제를 깊이 파고들면서 RevenueCat을 수익화 프레임워크의 정답으로 선택했다. API를 연구하고, 페이월 패턴을 이해하고, RevenueCat의 기능을 중심으로 가격 모델을 설계했다 — 수익화할 제품이 생기기도 전에. BrainFit에 인앱 구매가 필요해졌을 때, RevenueCat 연동은 몇 주가 아니라 몇 시간이 걸렸다.
Drift ORM. 완성하지 못한 모바일 앱 프로토타입에서 로컬 데이터베이스 기능이 필요했다. Flutter에서 로컬 SQL을 위해 Drift(구 Moor)를 선택했다. 그 전문성이 BrainFit의 오프라인 우선 아키텍처로 이어졌고, 게임 상태, Elo 레이팅, 성장 데이터가 모두 로컬에 저장된다.
Riverpod. 여러 Flutter 프로토타입 시도에 걸쳐 상태 관리를 실험했다. Provider, Bloc을 거쳐 결국 Riverpod에 정착했다. 마이그레이션 여정 — 별도의 글에 기록해뒀다 — 은 고통스러웠지만, 확립한 패턴은 이제 BrainFit과 BloomCard 양쪽에서 일관되게 사용되고 있다.
next-intl. CalcViral의 3개 국어 구현을 통해 Next.js에서의 국제화에 대해 전부 배웠다 — 서브패스 라우팅, 메시지 추출, 로케일 인식 SEO. BrainFit과 BloomCard의 웹 컴패니언 사이트는 완전히 동일한 next-intl 패턴을 사용한다.
이 실패들이 BrainFit과 BloomCard를 어떻게 만들었나
BrainFit과 BloomCard의 모든 주요 제품 결정에는 실패한 프로젝트에서 직접적인 선조가 있다:
"만들기 전에 검증하라"는 OGmake에서 왔다. 지금은 코드를 한 줄이라도 쓰기 전에 최소 일주일은 경쟁 상황을 조사하고, 현실적 매출을 추정하고, 프레임워크에 대입해 아이디어를 점수화한다. OGmake는 16개 아이디어 중 8위였는데도 만들었다. 그 실수를 더 이상 하지 않는다.
"가능한 가장 작은 것을 출시하라"는 QRPulse에서 왔다. QRPulse는 기능적으로 완성됐지만 시장에서는 죽어 있었다. 이제는 핵심 가설을 테스트하는 가장 못생기고 최소한의 버전을 출시한다. BrainFit v0.1은 성장 시스템 없는 게임 하나였다. BloomCard v0.1은 정적 정원 배경이 깔린 플래시카드였다. 둘 다 부끄러웠다. 둘 다 배우기에 충분했다.
"빨리 접으라"는 모바일 앱 리서치에서 왔다. 한 카테고리 전체를 몇 주간 리서치하고 나서야 솔로 개발자에게 적합하지 않다는 걸 발견했다. 그 경험이 시작 전에 명시적인 중단 기준을 정하는 습관을 만들었다. 이제 모든 프로젝트에는 30일 검증 기간이 주어진다. 30일 안에 그걸 원하는 사람 10명을 찾지 못하면, 멈춘다.
"사용자가 중요한 것을 알려준다"는 CalcViral에서 왔다. 계산기 20개와 두뇌 테스트 10개를 만들었다. 두뇌 테스트가 이겼다. 나는 그걸 예측하지 못했다. 사용자들이 보여줬다. BrainFit이 존재하는 이유는 내 가정이 아니라 인게이지먼트 데이터에 주의를 기울였기 때문이다.
"수익화는 후속이 아니라 설계 문제"라는 인식은 구독 피로 리서치에서 왔다. 사람들이 왜 구독을 싫어하는지 깊이 파고들면서 다크패턴과 인위적 제한에 대한 알레르기가 생겼다. BrainFit의 무료 티어에는 실제로 완전한 게임이 포함된다 — 불구화된 데모가 아니다. BloomCard의 무료 티어는 진짜 덱을 만들고 학습할 수 있다 — 카드 5장짜리 시용판이 아니다. 프리미엄은 진정으로 추가적인 가치를 잠금 해제한다, 인질로 잡힌 기능을 풀어주는 게 아니다.
메타 교훈
모든 것을 하나의 원칙으로 압축해야 한다면, 이것이다:
빨리 만들고. 빨리 검증하고. 빨리 접어라.
아무도 원하지 않는 것을 만드는 데 쓰는 매주는, 누군가 원하는 것을 만드는 데 쓰지 못하는 한 주다. 내가 접은 네 프로젝트는 대략 18개월의 저녁과 주말을 소모했다. 적지 않은 시간이다. 하지만 대안 — 실패하는 하나의 프로젝트에 18개월을 쓰는 것 — 은 더 나쁘다. 네 개의 교훈 대신 하나의 교훈만 배우니까.
OGmake는 만들기 전에 평가하라고 가르쳤다. QRPulse는 작동하는 제품이 검증된 제품이 아니라고 가르쳤다. 모바일 앱 리서치는 진입하기 전에 시장을 공부하라고 가르쳤다. CalcViral은 사용 데이터에 귀를 기울이라고 가르쳤다.
BrainFit과 BloomCard가 잘 되고 있는 건 내가 더 나은 개발자가 되어서가 아니다 (물론 그렇기도 하지만). 더 나은 의사결정자가 되었기 때문이다. 그리고 나쁜 결정을 내리고, 인식하고, 넘어가면서 더 나은 의사결정자가 되었다.
지금 안 되는 사이드 프로젝트를 붙잡고 있다면, 내 조언은 이것이다: 기한을 정하고, 성공 기준을 정의하고, 놓쳤을 때 솔직해져라. 다음 프로젝트가 되는 것일 수 있다. 하지만 안 되는 것을 계속 돌보고 있으면 영원히 못 찾는다.
이 글은 인디 앱 빌딩 시리즈의 일부입니다. 이 실패한 프로젝트들에서 얻은 수익화 교훈이 BrainFit과 BloomCard의 페이월 설계를 어떻게 형성했는지에 대한 심층 분석은 페이월 피로 설계를 참고하세요.