TinyPilot: Month 1

Michael Lynch

TinyPilot: 첫 달

한 줄 요약

드디어 출시하자마자 탄력을 받은 비즈니스를 만들었습니다.

하이라이트

  • 모든 프로젝트를 합쳐 이번 달 수익이 9,800달러로 역대 최고치를 기록했습니다.
  • TinyPilot은 제가 지금까지 출시한 것 중 첫 달 성과가 가장 컸습니다. 52대 판매에 수익 8,700달러를 올렸습니다.
  • 고객이 갑자기 몰리면서 전업으로 독립한 이후 가장 스트레스가 심한 달 중 하나가 되기도 했습니다.

목표 달성 평가

매달 초에 이루고 싶은 목표를 정합니다. 이번 달에는 목표를 얼마나 달성했을까요?

TinyPilot 관련 블로그 글 발행하기

이 글은 스크린샷과 제품 사진, 시연 영상을 많이 넣어야 해서 작성하는 데 오래 걸렸습니다. 결과물은 만족스럽습니다. 판매가 급증한 덕분에 들인 추가 노력이 충분히 보상받았다는 느낌이 듭니다.

TinyPilot 10대 판매하기

  • 결과: TinyPilot 52대 판매
  • 등급: A+

블로그 글을 올리기 전까지는 TinyPilot 키트를 두 대만 팔았습니다. 글이 공개되자 주문이 쏟아졌고, 목표를 훨씬 뛰어넘었습니다.

케토 인터뷰이들에게 약속한 인터뷰 정리하기

Keto Cornerstone은 6월에 떠올린 프로젝트 아이디어였는데, 이후 접기로 했습니다. 그래도 인터뷰를 약속하고 이야기를 들은 분들이 있어 약속을 지키고 싶었습니다. 인터뷰를 올리고 웹사이트도 그럴듯하게 꾸며 보려 했지만, 이제는 확실히 종료된 프로젝트라고 봐야 합니다.

TinyPilot 통계

지표2020년 6월2020년 7월변화
순 방문자 수514,930+4,879 (+9567%)
총 페이지뷰22010,427+10,207 (+4640%)
총 수익$173.94$8,741.37+$8,567.43 (+4926%)

당연히 이번 달은 TinyPilot의 대대적인 출시 달이었고, 판매는 예상을 훨씬 웃돌았습니다.

수익은 하드웨어 키트라서 단위당 원가가 상당하기 때문에 다소 과장된 수치입니다. 미리 재고를 많이 사두어서 이미 판매된 제품에 해당하는 원가만 따로 떼어 정확히 계산하기가 번거롭습니다. 대신 마진율이 40~50% 정도라고 말씀드리면, 이번 달 순이익은 약 4,000달러 수준이었습니다.

드디어 블로그와 비즈니스의 방향을 일치시키다

지난 몇 년간 저는 크고 작은 히트 블로그 글을 여러 편 썼습니다. 발행한 주에 3만~20만 명이 읽었고, Reddit, Twitter, Hacker News 같은 기술 커뮤니티에서도 꽤 좋은 반응을 얻었습니다.

대부분의 인디 개발자에게 Hacker News 1위는 비즈니스에 엄청난 호재가 됩니다. 제 문제는 늘 비즈니스가 블로그 독자층과 전혀 다른 시장을 대상으로 한다는 것이었습니다. 누구도 “Michael의 코드 리뷰에 대한 생각이 정말 마음에 드네. 이제 그의 케토 웹사이트에 들어가서 제휴 링크로 식품을 잔뜩 사야지”라고 말하지 않습니다.

저는 발행 전부터 TinyPilot 블로그 글은 다를 거라고 알고 있었습니다. 그 글의 독자층은 TinyPilot 키트의 잠재 고객과 명백히 크게 겹쳤습니다. 블로그 글로 관심을 끌 수 있다면 판매로도 이어질 가능성이 높았습니다.

다행히 블로그 글은 긍정적인 반응을 얻었습니다. Hacker News 1위를 차지해 대부분의 시간 동안 그 자리를 지켰고, 첫날에만 2만 2천 명이 읽었으며 지금까지 총 5만 2천 명이 읽었습니다.

Hacker News 1위에 오른 TinyPilot 블로그 글 스크린샷레딧에 올라온 TinyPilot 관련 글 스크린샷

제 TinyPilot 블로그 글은 Hacker News와 여러 인기 서브레딧에서 긍정적인 반응을 얻었습니다.

이런 반응의 단점은 제가 수요를 과소평가했다는 점이었습니다. 당장 배송할 수 있는 재고가 9개뿐이어서, 블로그 글이 공개된 날 한낮에 이미 품절되었습니다.

관심이 폭증했을 때 이를 더 잘 활용하지 못한 것은 아쉽습니다. 하지만 제품이 실패할 경우를 대비해 수천 달러어치 재고를 미리 사는 것이 부담스러웠습니다. 돌이켜보면 재고를 미리 확보하는 전략을 더 치밀하게 세웠어야 합니다. HDMI 동글은 배송이 가장 느리지만 가장 저렴한 부품 중 하나입니다. 그 부품만 100개 정도와 다른 저가 부품들을 미리 주문해 두었다면, 나머지는 급하게 주문해서 2~3일 안에 다시 판매를 재개할 수 있었을 것입니다.

재고 관리는 어렵다

블로그 글을 올린 이후로 재고 관리가 제 시간의 30%를 차지하고 생각의 80%를 점령했습니다. 모든 주문의 배송 상황을 강박적으로 확인하고, 키트 부품 하나가 떨어져 주문 처리가 멈출까 봐 끊임없이 걱정합니다.

이 글을 쓰는 시점에 밀린 주문 22건은 당장 처리할 수 있지만, USB to TTL 케이블이 떨어졌습니다. 원래 주문 후 이틀 안에 항상 도착하던 부품이라 조달을 전혀 걱정하지 않았는데, 이제는 배송 기간이 일주일로 늘어났습니다. 아마도 한정된 물량을 두고 제 글을 본 독자들과 경쟁하고 있기 때문일 것입니다.

물리적인 상품의 재고를 관리하면서 발견한 다른 확장성 문제들은 다음과 같습니다.

  • 서로 다른 판매처에 걸쳐 10~20개 주문이 동시에 배송 중이면, 무엇이 필요하고 언제 한 세트가 완성되는지 추적하기가 어려워집니다.
  • 주문량이 많아질수록 배송 예정일의 정확도와 일관성이 떨어집니다.
  • 일부 공급업체는 온라인 주문을 10개로 제한하고, 그 이상은 이메일 발주서를 통해서만 받는데, 이 과정에서 영업일 기준 2~3일이 추가로 걸립니다.
  • 수천 달러어치 재고를 주문하면 신용카드 한도가 찹니다.
  • 중국 판매자에게 주문하면 신용카드가 부정 사용으로 차단되기도 합니다.
  • 골판지 상자, 에어캡, 테이프처럼 보통 ‘재고’라고 생각하지 않는 물품이 떨어져 배송이 막히기도 합니다.

제 상황에 맞는 재고 관리 소프트웨어를 찾아봤지만 적합한 것을 찾지 못했습니다. 간단한 앱들은 원자재 개념을 이해하지 못하고 재고에 있는 모든 것이 그대로 판매하는 상품이라고 가정합니다. 복잡한 옵션들은 제 사용 사례를 ‘키팅(kitting)’이라고 부르며 지원하지만, 여러 창고와 배송 담당자, 발주서를 갖추고 있다는 전제를 깝니다. 게다가 월 80~500달러로, 지금으로서는 너무 비싸게 느껴집니다.

현재 저의 해결책은 필요한 모든 부품과 보유 재고, 배송 중인 물량을 추적하는 어설픈 스프레드시트입니다. 세련된 방법은 아니지만 단기적으로는 그런대로 작동하고 있습니다.

배송 중인 모든 주문을 추적하는 스프레드시트 스크린샷

제 TinyPilot 재고 스프레드시트

이 밀린 주문을 처리하고 나면 재고 관리가 지금처럼 복잡하지는 않기를 바랍니다. 부품별로 보유하고 싶은 재고 범위를 정해두고, 하한선 아래로 떨어지면 보충하는 방식입니다. 구매 급증을 흡수하고 다음 배송이 도착할 때까지 버틸 수 있을 만큼 충분한 수량을 설정할 수 있기를 기대합니다.

스트레스 관리는 더 어렵다

성공적인 프로젝트의 예상치 못한 부작용 중 하나는 스트레스였습니다.

저는 보통 저녁 식사 시간이면 업무 생각을 끄고 다음 날 아침에 다시 시작하는 편입니다. 블로그 글을 올린 뒤 첫 주에는 TinyPilot 걱정으로 하루 종일 마음이 불안했습니다. 글을 올린 뒤 나흘 동안 하루에 3~4시간밖에 자지 못했습니다. 늦게까지 뭔가 유용한 일을 한 것도 아니고, 그저 최악의 상황을 반복해서 곱씹었을 뿐입니다.

판매가 몰아칠 당시 TinyPilot을 써본 사람은 저를 포함해 두 명뿐이었습니다. 제 서버 두 대에서는 성공적으로 테스트했지만, 혹시 어떤 이유로 호환되지 않는 하드웨어군이 대거 존재하면 어쩌나 하는 생각이 들었습니다. 실제 업무에도 TinyPilot을 사용해 봤지만, 혹시 처참하게 실패하는 일반적인 사용 사례가 있으면 어쩌나 걱정했습니다. Raspberry Pi가 과연 TinyPilot에 적합한 하드웨어가 맞는지, 수천 달러를 재고에 쓰기 전에 다른 플랫폼으로 바꿔야 하는 건 아닌지 고민했습니다.

일주일이 지나 대화해 본 유료 고객들은 모두 아무 문제 없이 잘 사용하고 있다며 제품에 매우 만족해했습니다. 그제야 마음이 놓이고 큰 걱덩이 하나가 사라졌습니다. 그다음에는 재고와 배송 물류 걱정에 빠졌지만, 이제는 지속 가능한 시스템으로 나아가고 있어 한결 마음이 편해졌습니다.

이제 일은 어느 정도 통제되고 있다는 느낌이 들어 스트레스도 줄었습니다. 수면도 정상으로 돌아왔지만, 하루 일과를 마친 뒤에도 머릿속 스위치를 끄는 일은 여전히 쉽지 않습니다.

TinyPilot을 어떻게 지속 가능하게 만들 수 있을까?

현재 고객은 제게서 아무것도 구매하지 않고도 TinyPilot을 직접 만들 수 있습니다. DIY라는 점이야말로 사람들을 제 블로그 글로 끌어들인 이유이기도 합니다.

그럼에도 사람들은 여전히 공식 TinyPilot 키트를 주문합니다. 그 이유는 두 가지라고 생각합니다.

  1. 부품을 하나하나 따로 주문하는 대신 올인원 키트로 받는 편을 선호합니다.
  2. 프로젝트에 대한 고마움의 표시로 사실상 후원금을 보내고 있는 셈입니다.

문제는 이 두 가지 모두 그리 강력한 동기가 아니라는 점입니다. 대다수 사람들은 부품을 직접 주문해서 50% 더 저렴하게 구매하는 쪽을 선호할 가능성이 큽니다.

블로그 글로 판매가 급증했지만 이후에는 판매가 줄었습니다. 지난주에는 주문이 두 건, 이번 주에는 한 건에 불과했습니다. 물론 마케팅을 중단하고 품절 상태로 표시한 탓도 있지만, 초기의 주문은 대부분 일시적인 물결이었을 거라고 생각합니다.

블로그 글이 올라가 4,000달러 매출을 올린 날, 여자친구는 농담으로 “좋네! 매일 그렇게 하면 되겠네”라고 말했습니다. 문제는 당연히 매일 Hacker News 메인에 오를 수는 없다는 점입니다. TinyPilot이 더 이상 반짝이는 신제품이 아닐 때도 고객이 기꺼이 비용을 지불할 만큼 충분한 가치를 제공할 수 있는 무언가가 필요합니다.

고객에게 제공하는 것이 그들이 직접 만드는 것보다 더 가치 있게 느껴지도록 만들 방법을 찾고 있으며, 다음 세 가지 옵션을 고려하고 있습니다.

  1. 맞춤형 인클로저/케이스를 제공해 취미용 부품 모음이 아닌 완제품처럼 느껴지도록 합니다.
  2. TinyPilot 기능에 최적화된 맞춤형 하드웨어를 제공합니다.
  3. 유료 소프트웨어 기능을 제공합니다.

소프트웨어 개발자이다 보니 (3)번 쪽으로 마음이 기울고 있습니다.

지난 금요일에 TinyPilot Pro 티저를 올리고, 순수한 오픈소스를 유지하지 않는다고 배신감을 느낀 사람들의 반발을 각오했지만 아직까지 별다른 반발은 없습니다.

여러 고객이 클라우드 관리 기능을 요청했는데, 수익성은 좋아 보이지만 제 라이프스타일에 큰 변화를 요구합니다. 아이디어는 TinyPilot이 클라우드 서버에 접속해 두면, 고객이 VPN이나 방화벽 규칙을 설정하지 않고도 인터넷 어디서나 자신의 장치에 접속할 수 있게 하는 것입니다. 사용자가 TinyPilot 클라우드 관리를 위해 월 50달러 이상을 기꺼이 낼 가능성이 크기 때문에, 이는 반복 수익을 확보하는 확실한 방법이 될 것입니다.

문제는 이 서비스에 장애가 발생하면 매우 큰일이 되기 때문에 제가 항상 대기 상태로 있어야 한다는 점입니다. 저는 업무로부터 자유롭게 벗어날 수 있는 자유를 매우 소중히 여기기 때문에, 이런 서비스를 제공하면 삶에 상당한 스트레스가 더해질 것입니다. remote.it 같은 더 큰 회사와 협력해 이 서비스를 제공하는 방법도 가능하지만, 그렇게 되면 공급업체가 제 비즈니스에 과도한 통제권을 갖게 될 수도 있습니다.

기존 프로젝트

아직 유지보수하고 있지만 현재 주력 개발 대상은 아닌 프로젝트들의 간단한 업데이트입니다.

Is It Keto

지표2020년 6월2020년 7월변화
순 방문자 수46,38648,231+1,845 (+4%)
총 페이지뷰109,721118,980+9,259 (+8%)
도메인 등급 (Ahrefs)8.08.00
AdSense 수익$85.81$208.86+$123.05 (+143%)
Amazon 제휴 수익$94.85$134.45+$39.60 (+42%)
기타 제휴 수익N/A$26.60N/A
총 수익$180.66$369.91+$189.25 (+105%)

지난 두 달간 Is It Keto의 광고를 AdSense와 Amazon에서 직접 제휴 파트너십자매 제품용 랜딩 페이지 쪽으로 옮겨 보려 했습니다. 직접 계약은 수익이 거의 없었고, 심지어 제휴 파트너를 속이는 업체를 발견하기도 했습니다. 그래서 다시 100% 평범한 AdSense와 Amazon 광고로 되돌렸고, 그 덕분에 광고 수익이 다시 올랐습니다.

사이트 지표가 충분히 좋아 이제 AdThrive 네트워크에 지원할 자격이 됩니다. 제가 본 몇몇 보고서에 따르면 AdThrive의 지급액은 AdSense보다 2~8배 높아, Is It Keto에는 게임 체인저가 될 수 있습니다.

Is It Keto의 콘텐츠를 프로그래매틱 페이지 생성으로 50% 늘린 지 이제 두 달이 지났습니다. 아직 효과가 있는지는 불분명합니다. 지난 3개월간 전체 12만 2천 건의 Google 검색 클릭 중 새 페이지가 차지하는 비중은 7,600건에 불과하지만, 아직 성장 중이고 방문자가 사이트에 머무는 동안 더 많은 페이지뷰로 이어지고 있을 가능성도 있습니다.

Zestful

지표2020년 6월2020년 7월변화
순 방문자 수369440+71 (+19%)
총 페이지뷰9951,247+252 (+25%)
RapidAPI 수익$5.86$18.05+$12.19 (+208%)
엔터프라이즈 플랜 수익$679.40$0.00-$679.40 (-100%)
총 수익$685.26$18.05-$667.21 (-97%)

Zestful은 조용한 한 달을 보냈습니다. 새로운 인바운드 문의는 없었습니다. 지난달 엔터프라이즈 플랜에 가입했던 소규모 고객은 예상대로 갱신하지 않았습니다. RapidAPI 수익은 100달러 미만에 머물렀습니다.

mtlynch.io (이 블로그)

지표2020년 6월2020년 7월변화
순 방문자 수12,51849,957+37,439 (+299%)
총 페이지뷰25,04279,921+54,879 (+219%)
Amazon 제휴 수익$39.02$649.45$610.43 (+1564%)

저는 보통 이 블로그의 통계를 추적하지 않지만, 이번 달에는 다음 섹션에서 자랑하고 싶은 이야기가 있어 포함했습니다.

수익 측면에서 7월은 블로그에 이례적인 달이었습니다. 많은 독자가 제 튜토리얼 속 제휴 링크를 통해 직접 TinyPilot을 만들기 위한 장비를 구매했기 때문입니다.

수익 요약

지표2020년 6월2020년 7월변화
TinyPilot$173.94$8,741.37+$8,567.43 (+4926%)
Is It Keto$180.66$369.91+$189.25 (+105%)
Zestful$685.26$18.05-$667.21 (-97%)
mtlynch.io$39.02$649.45$610.43 (+1564%)
합계$1,078.88$9,778.78+$8,699.90 (+806%)

7월은 제가 경험한 중 가장 수익이 높은 달이었습니다. 사실 2018년과 2019년 2년 치 수익을 합친 금액보다도 200달러 더 많았습니다. 이로써 2020년 누적 수익은 1만 3,100달러가 되었고, 2020년 말까지 수익 2만 달러라는 목표가 충분히 달성 가능해 보입니다.

마무리

무엇을 해냈나?

배운 점

  • 재고를 주문할 때는 배송 기간이 길거나 보관 비용이 저렴한 품목에 더 큰 버퍼를 두어야 합니다.
  • 실물 상품 판매에 Stripe를 사용하지 마세요.
    • Shopify가 모든 면에서 우수합니다.
  • 원자재를 주문할 때는 품목마다 최소 두 곳의 공급업체를 확보하세요.
    • 주문을 분산·교차하여 한 업체에만 의존하지 않도록 해야 합니다.
  • 판매자가 제공하는 배송 예정일은 의심해야 합니다.
    • USPS/UPS/FedEx가 물건을 인수한 뒤 제공하는 배송 예정일이 훨씬 더 정확합니다.
    • Amazon, eBay, AliExpress에서는 많은 판매자가 미국에서 발송한다고 주장하지만, 실제로는 주문이 들어오면 중국에서 주문해 재배송하는 것으로 보입니다.

다음 달 목표

  • TinyPilot 키트 30대 판매하기.
  • 검색 광고나 인플루언서 마케팅 등 세 가지 새로운 마케팅 채널 테스트하기.
  • TinyPilot에 마우스 통합 지원 구현하기.
    • 드디어 TinyPilot KVM에서 M을 진짜 의미 있게 만들 수 있게 됩니다.

원문은 Michael Lynch님이 에 게재했습니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.