TinyPilot: Month 31

Michael Lynch

TinyPilot: 31개월 차

원문은 Michael Lynch님이 에 게재했습니다. 이 블로그 구독하기

한 줄 요약

어떤 전환은 다른 전환보다 훨씬 순조롭다.

처음 방문하셨나요?

안녕하세요, 저는 마이클입니다. 소프트웨어 개발자이자 독립 컴퓨터 하드웨어 기업인 TinyPilot의 창업자입니다. 2020년에 회사를 시작했고, 현재 월 6만~8만 달러의 매출을 올리며 6명의 직원과 함께 일하고 있습니다.

매달 저는 이렇게 회고 글을 발행해 비즈니스와 전반적인 업무 상황이 어떻게 흘러가고 있는지 공유합니다.

하이라이트

  • TinyPilot이 신제품 Voyager 2a의 출하를 시작했습니다.
  • 새로운 3PL 업체와의 계약을 시작한 지 몇 주 만에 해지했습니다.

목표 평가

매달 초에 달성하고 싶은 목표를 정합니다. 이번 달 목표에 대한 성과는 다음과 같습니다:

첫 번째 Voyager 2a 기기 출하하기

  • 결과: Voyager 2a 출하를 시작했습니다.
  • 평가: A

Voyager 2a는 결국 TinyPilot 역사상 가장 순조로운 출시가 되었습니다. 이전 출시 때마다 항상 사소한 것들을 몇 가지씩 빠뜨려 막판에 허둥댔는데, 이번 2a는 12월부터 필요한 모든 일을 준비해 왔고 모든 것이 계획대로 진행됐습니다.

2월에 풀필먼트를 3PL 업체로 전환할 준비하기

  • 결과: 3PL 업체와의 계약을 해지했습니다.
  • 평가: 해당 없음

안타깝게도 3PL과 일을 시작하고 나서 그들의 업무 프로세스에 심각한 허점이 있다는 것을 알게 되었습니다. 자세한 내용은 아래에서 설명합니다.

다섯 번째 연간 회고 작성하기

  • 결과: 10일 늦게 발행했지만 결과에는 만족합니다.
  • 평가: A-

올해 연간 회고를 쓰는 게 쉽지 않았습니다. 최종 글은 2,500단어였지만, 아마 버린 초고만 5,000~8,000단어는 될 겁니다. 계속 긴 문단을 쓰다가도 200단어 분량의 회고를 위해 1,500단어 분량의 지루한 배경 설명이 필요하다는 걸 깨닫고 지우기를 반복했습니다.

제가 발행한 버전은 복잡한 이야기들에 너무 깊이 빠지지 않으면서도 한 해의 주요 주제들을 잘 다뤘다고 생각합니다.

TinyPilot 통계

지표2022년 12월2023년 1월변동
순 방문자 수7,3088,092+784 (+11%)
총 페이지뷰15,54916,665+1,116 (+7%)
판매 매출$66,092.24$68,619.55+$2,527.31 (+4%)
엔터프라이즈 구독$290.70$290.700
로열티$2,798.97$5,689.93+$2,890.96 (+103%)
총 매출$69,181.91$74,600.18+$5,418.27 (+8%)
수익-$4,806.26$8,552.79+$13,359.05 (+inf%)

매출은 작년 말 정점보다 하락했지만, 이는 의도된 결과입니다. 공급 부족을 보완하고 신제품으로 전환하는 동안 TinyPilot 풀필먼트 담당자들의 업무 부담을 줄이기 위해 광고를 축소하고 Amazon 가격을 높게 유지하고 있습니다.

TinyPilot의 3개월 이동 평균 수익은 5개월 연속 흑자를 기록했으며, 이는 최장 기록입니다. 특히 1월 수치가 고무적인 이유는 몇 가지 큰 일회성 비용이 있었고 예상보다 판매가 저조했음에도 건전한 수익을 냈기 때문입니다. 월 8,500달러면 2023년 연간 수익 10만 달러 목표를 달성하기에 거의 정확히 궤도에 올라 있습니다.

월 생산량 140대에서 200대로 증대

작년 말, TinyPilot이 2023년 9월까지 새로운 Raspberry Pi 물량을 배정받지 못할 것이라는 통보를 받았습니다. 이는 그때까지 월 생산 능력이 약 140대로 제한된다는 의미였습니다. 힘든 소식이었지만, 나름대로 우회할 계획을 세워 두었습니다.

다행히 1월에 소량의 신규 물량을 배정받는다는 소식을 들었습니다. 덕분에 생산 능력이 월 200대로 늘어납니다. 8GB 모델을 거의 두 배 가격에 구매해야 하지만, 신제품 판매를 이어갈 수 있다면 기꺼이 프리미엄을 지불할 의향이 있습니다.

월 200대라는 목표에 만족합니다. 이 정도 속도라면 충분히 판매할 수 있으면서도, 9월에 공급 부족이 완화될 때 더 빠른 확장을 위해 투자할 시간과 수익도 남길 수 있습니다.

아슬아슬하게 제때 확보한 메탈 케이스

매년 1월 말에서 2월 초, 중국은 춘절을 기념합니다. 중국은 설 연휴를 크게 쇠기 때문에 협력 업체들이 완전히 문을 닫습니다. 어떤 곳은 2주 정도 쉬지만, 어떤 곳은 최대 4주까지 연락이 두절됩니다.

TinyPilot은 대부분의 원자재를 중국에서 구매하기 때문에 춘절을 염두에 두고 꼼꼼히 계획을 세웁니다. 셧다운이 시작되기 전에 주문이 완료될 수 있도록 일찍 발주해야 합니다. 또 새로운 주문을 할 수 없는 4주간의 공백을 버틸 수 있도록 평소보다 많은 수량을 주문해야 합니다.

12월에는 아직 TinyPilot의 새로운 메탈 케이스 디자인을 마무리하는 중이었습니다. 제조사는 주문 완료까지 영업일 기준 30일이 걸릴 것으로 예상했고, 우리는 춘절 위험 구간에 바짝 다가선 상황이었습니다.

보통 커스텀 제품의 첫 생산을 발주할 때는 가능한 가장 적은 수량, 즉 4주치 정도만 주문합니다. 하지만 이번 경우에는 최소 수량 자체가 4개월치였습니다. 춘절 기간을 버티고 다음 생산 물량이 들어올 때까지 버틸 만큼이 필요했기 때문입니다.

그래서 이미 이 주문 자체가 스트레스가 컸습니다. 시제품을 확인했어도 첫 양산에서는 수많은 문제가 발생할 수 있고, 자칫 1,000개의 불량 케이스를 쓸모없이 떠안을 수도 있었습니다. 그렇게 되면 초과 수요를 맞추기 위해 높은 프리미엄을 주고 이용해 온 3D 프린팅 대체 업체의 케이스를 또다시 4개월 동안 써야 한다는 의미이기도 했습니다.

또 다른 큰 위험은 제조사가 납기를 지키지 못하고 춘절 전에 아무것도 출하하지 못하는 것이었습니다. 출하 예정일을 앞두고 몇 주 동안 제조사는 납기를 맞출 수 있을 것 같다는 말 외에는 아무런 진행 상황도 알려주지 않았습니다. 필요하다면 부분 출하라도 해달라고 요청했지만, 그게 도움이 될지 여부에 대해서도 답을 주지 않았습니다.

마침내 그들이 연휴로 문을 닫았다고 생각한 다음 날인 토요일에 배송비 결제를 즉시 보내달라는 이메일을 받았습니다. 바로 송금했고, 며칠 뒤 케이스 운송장 번호를 받았습니다.

일주일 뒤, 케이스가 도착했습니다! 그리고 다행히도 모든 제품의 품질은 시제품만큼 훌륭했습니다.

다른 케이스들로 가득 찬 골판지 상자 안의 TinyPilot 메탈 케이스 사진

새 케이스 16박스 중 하나

덕분에 Voyager 2a를 예정대로 출하할 수 있었고, 다음 생산분이 들어올 때까지 버틸 충분한 케이스도 확보했습니다.

3PL 업체 전환 과정의 난항

올해 목표 중 하나는 TinyPilot의 사내 풀필먼트 과정을 외부 배송 창고로 이전하는 것입니다. 이러한 업체를 “3PL”, 즉 제3자 물류 제공업체라고 부릅니다.

12월에 우리는 풀필먼트를 3PL 업체로 옮기기 시작했고, 처음에는 순조롭게 출발했습니다. 그 업체는 작은 회사였고 고객도 모두 소상공인들이었습니다. 서로 잘 맞는 것 같았고, 우리 요구사항도 잘 이해하는 듯했습니다.

그러다 그들이 창고 관리 소프트웨어인 Veracore와의 연동 방법을 안내했는데, 안내서가 PDF 파일이었습니다. 그게 첫 번째 경고 신호였습니다. 시스템에 로그인해 보니 20년은 업데이트되지 않은 것 같은 ASP 앱이 나타났습니다.

끔찍한 ASP 앱 스크린샷이 담긴 Veracore PDF 안내서의 한 페이지

웹 인터페이스 스크린샷이 담긴 Veracore 온보딩 안내 PDF

터무니없이 오래된 소프트웨어를 보니 확실히 불안했지만, 괜찮을 거라고 스스로를 달랬습니다. TinyPilot 팀은 계속 Shopify에서 주문을 관리할 것이고, Veracore는 3PL이 우리 시스템과 동기화하는 방식일 뿐 제가 직접 많이 쓸 일은 없을 거라고 생각했습니다.

우리는 판매량이 적은 제품부터 3PL로 옮겨 보기로 했습니다. 바로 TinyPilot Power Connector였습니다. 주력 제품 가격의 10분의 1에 불과하고 월 판매량도 30~40개 정도라 전체 프로세스를 종단간으로 테스트하기에 위험 부담이 적었습니다.

3PL에서 주문 처리를 켠 뒤, 첫 Power Connector 주문이 크리스마스 오후 5시에 들어왔습니다. 당연히 연휴라 당일 출고는 되지 않을 테니 다음 날 오후에 주문 상태를 확인했습니다. Shopify에서는 여전히 미처리 상태로 표시됐지만, 괜찮다고 생각했습니다. 어쩌면 크리스마스 다음 날도 휴무일 수도 있으니까요.

27일 오후 3시가 되어도 주문은 여전히 발송되지 않았습니다. 3PL에 이메일로 주문이 제대로 전달되고 있는지 확인했습니다. 그들은 모든 게 정상적으로 작동하고 있지만 Veracore가 주문 상태를 Shopify로 하루에 한 번만 동기화한다고 답했습니다. Shopify에서 처리 상태와 운송장 번호는 오후 8시쯤 업데이트될 것이라고 했습니다.

하루에 한 번? 왜 Veracore는 배송 라벨을 출력하자마자 바로 주문을 처리 완료로 표시하지 않는 걸까? 그러면 정보를 실시간으로 받을 수 있을 텐데.

그래도 괜찮을 거라고 생각했습니다. 이 시스템을 만족하며 쓰는 고객이 백 명이나 있는데, 내가 굳이 실시간 풀필먼트 정보가 왜 필요하겠는가 싶었습니다.

고객이 주문을 변경하면 어떻게 할까?

30건당 한 번꼴로 고객이 변경을 요청합니다. 때로는 배송 주소를 잘못 입력했다는 걸 깨닫고, 때로는 아예 마음을 바꿔 주문을 취소하고 싶어 합니다.

TinyPilot의 현재 시스템에서는 이런 요청을 처리하기가 쉽습니다. 고객 지원 요청을 처리하는 두 명의 직원이 곧 주문을 직접 처리하는 사람들이기 때문입니다. 주문이 아직 발송되지 않았다면 Shopify에서 바로 변경하고 평소처럼 프로세스를 이어가면 됩니다.

3PL로 전환했을 때 바로 이 “하루에 한 번 동기화” 문제가 발목을 잡았습니다. 고객이 이메일로 변경을 요청해도 주문이 이미 처리됐는지 알 수 없었습니다. Shopify에서 보는 정보는 최대 24시간까지 오래된 정보였기 때문입니다.

3PL이 제시한 해결책은 우리 주문을 담당하는 직원에게 이메일로 변경 사항을 알리라는 것이었습니다. 끔찍한 시스템처럼 느껴졌습니다.

현재 Shopify는 우리의 “단일 진실 공급원(source of truth)”입니다. Shopify가 주문에 대한 정보를 모두가 공유하는 공신력 있는 장소이기 때문에 믿고 쓸 수 있습니다. 이메일로 별도의 논의를 시작하면 정보가 여러 사일로에 분산되어 동기화하기 어려워집니다.

또 팀이 아닌 개인에게 이메일을 보내는 방식도 마음에 들지 않았습니다. 그 사람이 아프거나 휴가 중이면 어떻게 할까요? 3PL 측은 보통 다른 사람이 그 사람의 이메일을 확인한다고 했습니다. 보통이라니요?

고객이 비표준 방식으로 결제하면 어떻게 할까?

TinyPilot에서 고객이 웹사이트의 일반적인 결제 흐름 외의 방식으로 구매하는 경우는 두 가지가 흔합니다:

  1. 웹사이트에서 지원하지 않는 맞춤 주문이 필요한 경우(예: 대량 할인).
  2. 구매 주문서(purchase order, 대기업이 일종의 차용증처럼 쓰는 문서)로 결제하고 싶어 하는 경우.

(1)의 경우, 맞춤 주문을 생성한 뒤 고객에게 신용카드로 결제할 수 있는 링크를 제공합니다. 고객이 결제하면 Shopify가 자동으로 주문을 “결제 완료”로 표시하고 우리는 발송합니다.

(2)의 경우, 맞춤 주문을 생성한 뒤 고객이 서명한 구매 주문서를 보내올 때까지 기다립니다. 구매 주문서를 받으면 Shopify에서는 아직 실제 현금을 받지 못했기 때문에 주문이 “미결제” 상태로 표시되지만, 구매 주문서를 근거로 발송합니다.

보다시피 시나리오 (1)과 (2)는 서로 상충합니다. 3PL에 “결제 완료”로 표시된 주문만 보류하라고 하면 구매 주문서로 결제하는 고객(2)에게는 작동하지 않습니다. 반대로 3PL에 미결제 주문이라도 발송하라고 하면, (1)의 주문은 고객이 실제로 결제하지 않을 수도 있는데도 즉시 발송해 버리게 됩니다.

3PL을 쓰기 전에는 구매 주문서 같은 경우 의도를 명확히 하기 위해 주문에 메모를 추가했습니다. 하지만 3PL은 각 주문을 한 번만 가져오기 때문에, 나중에 메모를 추가해도 그들에게는 전달되지 않습니다.

3PL의 해결책은 이번에도 역시 주문 담당자에게 이메일로 특수한 주문에 대해 설명하라는 것이었습니다.

지금 이렇게 적고 보니, 제가 분명한 해결책을 놓쳤다는 걸 깨닫습니다. 그냥 “결제 완료로 표시된 주문만 발송한다”는 규칙을 만들면 됐었습니다. 그리고 (2)의 경우에는 구매 주문서를 받았을 때 수동으로 주문을 “결제 완료”로 표시하면 됩니다. 미결제 구매 주문서를 추적할 별도 시스템이 필요하겠지만, 3PL과의 인터페이스를 복잡하게 만드는 것보다는 훨씬 쉽습니다.

3PL 교체

전반적으로 첫 번째 3PL의 변경 관리 시스템은 불안정하고 비싼 실수를 초래하기 쉬워 보였습니다.

우리는 3PL에 이 방식으로는 안 되겠다고 말했고, 그들은 너그럽게 받아들였습니다. 계약상 2개월 전에 통지해야 해서 350달러의 월 최소 비용을 두 달 더 지불해야 할 수도 있었지만, 그들은 요구하지 않았습니다.

3PL 업체들을 인터뷰할 때 마음에 드는 곳이 두 곳 있었습니다. 두 곳 모두 거의 비슷하게 마음에 들었습니다. 운전해서 갈 수 있는 거리에 있는 곳을 선택했지만, 다른 곳도 언제든 연락하라고 했습니다.

첫 번째 3PL에서 엣지 케이스 문제에 부딪혔을 때, 두 번째 후보에게 이런 상황을 어떻게 처리하는지 문의했습니다. 대표는 Veracore가 오래된 시스템이라는 데 동의하며, 자신들의 창고 소프트웨어가 제 시나리오를 어떻게 처리할지 설명해 주었습니다. 훨씬 더 매끄러워 보였고, 임시방편 이메일을 오가며 메우는 대신 Shopify에서 계속 관리할 수 있게 해주는 방식이었습니다. 우리는 지금 그 3PL 업체로 전환하는 과정에 있습니다.

마무리

무엇을 해냈나?

배운 점

  • 3PL이 비표준 주문을 어떻게 처리할지 파악하라.
  • 이커머스 플랫폼과 3PL 주문 관리 시스템 간의 인터페이스는 최대한 단순하게 유지하라.
    • 제 경우, 3PL 연동을 단순화할 수 있는 간단한 프로세스 변경을 간과했습니다.
  • 새로운 3PL로 한 번에 전부 전환하지 마라.
    • 위험이 더 큰 제품으로 넘어가기 전에, 판매량이 적거나 가격이 낮은 제품부터 시작해 문제점을 해결하라.

다음 달 목표

  • 즉시 출하 가능한 TinyPilot 기기 재고를 정상 수준으로 회복하기.
  • 새로운 3PL 업체로 전환하는 절차 시작하기.
  • 개발자와 지원 엔지니어 간의 부서 간 협업 시작하기.

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

댓글