TinyPilot: Month 17

Michael Lynch

TinyPilot:第 17 個月

原文由 Michael Lynch 發布,訂閱此部落格

一句話總結

移除一個連結如何帶來 62% 的銷售成長

重點回顧

  • TinyPilot 的銷售額躍升至 5.7 萬美元,而且這波成長或許能持續下去。
  • 我即將推出 TinyPilot 的新產品與全新品牌形象。
  • 我把個人 side project 的 Google Cloud Platform 費用降低了 90%。

目標達成度

每個月月初,我都會訂下想完成的目標。以下是這個月的達成狀況:

完成 TinyPilot 網站的品牌重塑

  • 結果:品牌重塑已完成 95%,但尚未上線。
  • 評分:B

我已經和設計公司敲定了 Logo 概念與配色,但還有些細節要調整,才能正式啟用新的品牌視覺。

硬體就緒後盡快準備 Voyager 2 上市

  • 結果:一切就緒,收到硬體後一週內即可上市
  • 評分:A-

為了 Voyager 2 所需的客製化硬體,我們奮戰了好一段時間,不過總算完成生產,上週也收到了第一批硬體,所以這週應該就能準備上市。進度比我預期的稍慢一些,因為 Voyager 1 的需求實在太大,我們有點應接不暇,但應該只會延遲一兩天。

聘請行銷公司或接案者,協助 TinyPilot 探索付費行銷管道

  • 結果:因優先順序改變而暫時擱置
  • 評分:N/A

我和幾家行銷公司聊過,但還沒準備好要找人合作。光是要跟上 TinyPilot 不斷成長的銷售量就已經很吃力了,所以我先暫停行銷計畫,專心擴大產能以滿足現有的需求。

TinyPilot 數據一覽

指標2021 年 10 月2021 年 11 月變化
不重複訪客6,8987,983+1,085 (+16%)
總瀏覽量13,00814,596+1,588 (+12%)
銷售營收$34,927.55$56,626.33+$21,698.78 (+62%)
企業訂閱$48.00$47.75-$0.25 (-1%)
權利金$6,804.53$8,185.78+$1,381.25 (+20%)
總營收$41,780.08$64,859.86+$23,079.78 (+55%)
利潤$1,936.22$12,758.39+$10,822.17 (+559%)

精簡到單一產品,銷售額幾乎翻倍

由於供應短缺,我在十月停售了 TinyPilot 較平價的產品,專注於高階產品 TinyPilot Voyager。這讓產品型錄只剩下 Voyager 和一些銷量不大的配件,所以我決定直接把型錄頁面拿掉。

基本上,我只是從網站的導覽列上移掉了一個連結。

舊版產品型錄頁面截圖
舊版產品型錄頁面截圖

我在 TinyPilot 網站上做過影響最大的改動,就是把導覽列上連到產品型錄頁面的連結拿掉。

在上個月的回顧中,我提到銷售開始呈現上升趨勢,當時還在想是不是跟簡化產品線有關。經過一個月的數據驗證,我相當確定這帶來了巨大的影響:

TinyPilot 銷售額隨時間變化的圖表,在整合為單一產品後呈現上升趨勢

整合為單一產品前後,TinyPilot 的每週銷售額

我們以前也曾有過銷售高峰,但每次都伴隨著某個明顯的事件,像是被 YouTube 提到或在熱門網站上被評測。銷售量會暴衝一下,然後慢慢回落。

自從整合為單一產品後,銷售量一直維持在過去高峰的水準,而且不像一次性事件那樣逐漸下滑。

如果銷售成長真的是因為拿掉型錄頁面,那這就是我在 TinyPilot 做過投資報酬率最高的改動。我只是移掉一個連結,銷售額就成長了 62%!

成長陣痛再度來襲

在 TinyPilot 創立的前六個月,我總是手忙腳亂地追著成長跑。銷售額每四到八週就翻倍,我得不斷尋找新的供應商、重新設計流程來擴大規模。那段成長雖然令人興奮,但也讓人筋疲力盡。2021 年的大部分時間能進入比較穩定、可預期的步調,我其實鬆了一口氣。

最近這一波銷售成長,又把成長的陣痛帶回來了。我們原本就有因應銷售高峰的備案,今年以來也都派上用場,但我們完全沒準備好要面對這種持續性的成長。

電源轉接頭快用完了

首先,我們發現電源轉接頭消耗得太快,在下一批電路板到貨前就會用完,到時候就沒辦法繼續販售 Voyager 了。

TinyPilot 電源轉接頭照片

我們差幾天就要把 TinyPilot 電源轉接頭用光了。

我把單獨販售的電源轉接頭標示為缺貨,這才稍微減緩了消耗速度,撐到新貨抵達。

[附註:如果你好奇,既然我剛剛才大肆強調不再販售 Voyager 以外的產品,為什麼還在賣電源轉接頭,我可以解釋一下。透過我的 DIY TinyPilot 教學,還是能找到連往 TinyPilot 其他周邊產品的連結,只是直接逛 TinyPilot 官網的話,已經很難發現這些頁面了。]

排線也快見底了

接著,我們的排線也開始見底了。我們通常都是大量採購,手邊庫存很多,多到根本不值得放進庫存系統追蹤。但也因為沒有追蹤,我們沒發現上一筆訂單延遲了。庫存只剩下 30 條,只夠做幾天份的 Voyager。

TinyPilot 使用的排線照片

TinyPilot 的銷售差點就因為 70mm 排線用完而停擺。

我們用的排線尺寸比較特殊,都是特別訂製的。難道我就要因為這種小東西,讓銷售停擺好幾個星期嗎?

還好,供應商幫我們加急處理,幾天內就送來了新的一批排線。我還恐慌性地多買了 1,500 條,短期內應該不用擔心了。

此外,我們決定把排線也納入正規的庫存系統管理。我們發現,以前那種非正式的追蹤方式,讓人根本分不清到底是「可以慢慢下新訂單的時候」還是「已經火燒眉毛了!」

擴大 3D 列印產能

最後一個短缺問題,是我們至今還沒解決的:外殼。我們一直都是用 3D 列印來做外殼,因為這樣可以快速迭代。我們使用的列印材料質感很好,經常收到顧客和評測者對外殼品質的稱讚。

問題是 3D 列印速度很慢,尤其是我們用的這種材料。印一個 Voyager 1 的外殼就要八小時,Voyager 2 更是要十二小時。我們的 3D 列印廠商已經為我們多買了一台列印機,但我預期換成 Voyager 2 之後,產能還是會不夠。很可惜,廠商不可能每次我們銷售成長就買新機器。

短期內,TinyPilot 的歐洲經銷商改為在當地自行列印外殼,不再向我們進貨,這讓我們的列印負擔減輕了約 30%。長期來看,我正和 3D 列印廠商一起研究其他列印更快、但仍保有高級質感的材料。或許也是時候重新考慮射出成型了,雖然前期成本要 2 萬到 4 萬美元,但每週可以產出數千個外殼。

把個人 side project 從 Google Cloud Platform 搬出來

在這些回顧中,我主要都聚焦在本業上,不過這個月我倒是很愉快地把個人 side project 從 Google Cloud Platform(GCP)搬了出來。

我大約八年前開始使用 GCP。當時多數雲端服務商託管一個網頁應用程式要收 10 到 20 美元月費,而 Google 的 App Engine 和 Firebase 這類服務可以為小專案縮減到每月 0 美元,讓人更願意嘗試新點子。如果知道不會被綁著每個月固定付 20 美元,我就更有可能把新專案發表出來。

如今,GCP 對小專案來說通常不是個好選擇。服務變得又肥大又複雜,光是建立並部署一個最基本的網頁應用程式,就要花我大約一小時去調整設定和權限。幸好,現在有許多 GCP 的替代方案,不僅成本更低、開發體驗更好,客服支援也更優秀(我的意思是,至少有客服)。

因為用了 GCP 這麼久,我的許多 side project 至今仍跑在上面,服務費用也越積越多。上個月我利用晚上和週末的時間,把最花錢的幾個服務從 GCP 搬走。

以下是大遷移前,我在 GCP 上的花費:

2021 年 8 月至 10 月在 GCP 上的花費圖表,總計 252.71 美元

2021 年 8 月至 10 月在 GCP 上託管 side project 的費用

而這是搬遷完成後的費用:

GCP 服務費用趨近於零的趨勢圖

11 月遷移到 Google Cloud 替代方案後,Google Cloud 服務的費用

HTTP 負載平衡 — 每月 37 美元

HTTP 負載平衡是個大坑。

在 What Got Done 和 WanderJest 上,我讓使用者上傳圖片,然後把檔案存在 Google Cloud Storage(GCS)儲存桶裡。預設的 GCS 網址是一長串又醜又亂的東西,像是 https://storage.googleapis.com/whatgotdone-public/...。我想要的是像 https://media.whatgotdone.com 這樣簡潔漂亮的網址。

這個簡單的 80 步驟流程就是在教你怎麼用 Google 的方式,透過子網域來提供 GCS 上的檔案。過程包括申請固定的 IPv4 位址、設定 HTTP 負載平衡器、產生 TLS 憑證。我照著步驟全部做完,才發現每個網站的負載平衡器會讓成本增加約每月 18 美元。

改用 BunnyCDN 後,我大幅降低了這筆費用。我本來擔心設定整個 CDN 會很麻煩,結果卻異常簡單。從發現 BunnyCDN 這個服務到讓它透過 media.whatgotdone.com 這個網域來提供我的 GCS 儲存桶,前後不到 30 分鐘。我只要告訴 Bunny 我的 GCS 儲存桶網址和想要的子網域,再加一筆 DNS 紀錄就搞定了。

BunnyCDN pull zone 設定頁面截圖

BunnyCDN 讓我只用三個步驟,就能為 GCS 儲存桶自訂網域名稱。

BunnyCDN 的最低消費是每月總計 1 美元,而 Google 每個網站就要約 18 美元。我目前的用量遠低於最低消費。到目前為止我只用了 78.55 MB 的頻寬,換算下來費用大約是 $0.0008。就算超過 BunnyCDN 的最低消費,他們的頻寬單價也不到 Google 的十分之一。

頻寬 — 每月 21 美元

我的對外頻寬費用主要來自這個部落格和 Is It Keto。兩個網站原本都託管在 Google Firebase 上,頻寬費用是每 GB $0.15。我的網站加起來每月大約提供 150 GB 的頻寬,但如果部落格讀者突然暴增,這個數字可能會變成三倍。

我找過其他靜態檔案託管服務,但不知為何,幾乎每家靜態託管商都想包辦整個持續整合(CI)流程。我不想要那樣。我想用 CI 廠商來做 CI,用託管服務商來做託管。

我以前也研究過 Netlify,但當時覺得他們就是那種「堅持要當你的 CI」的託管商,所以沒考慮。後來,Siddhant Goel 告訴我 Netlify 有「手動建置」模式,可以跳過他們那套 CI 流程。他們有每月 $19、包含 400 GB 頻寬的方案,超過後每 GB $0.20,所以就算偶爾某個月訪客暴增,我每個月大概也只要付 20 美元左右。

App Engine — 每月 13 美元

最後一筆比較大的開銷是 What Got Done 在 App Engine 上的託管費用。好幾年來費用都維持在每月約 $2,到了七月卻突然飆升到每月 $10 到 $15,我也不知道為什麼。

幸好 What Got Done 是個標準的 Go 網頁應用程式,不一定非得跑在 App Engine 上。比較難處理的是資料層對 Google Firestore 的依賴。我本來可以分別遷移 App Engine 和 Firestore,但處理 Google 的服務帳號和權限實在太痛苦了,所以我決定一次跟這兩個服務徹底切割。

為了取代 Firestore,我改用 SQLiteLitestream。SQLite 是把所有資料都存在單一檔案裡的簡易 SQL 資料庫,Litestream 則是把 SQLite 資料庫同步到雲端的工具。我之前用同樣的技術打造了 LogPaste,效果很好,所以想在這方面多投入一些。

為了取代 App Engine,我改用 fly.io。過去一年我一直在試用 fly.io,體驗一直都很好。文件寫得很清楚,工具的運作也符合預期,而且創辦人和主要工程師都會在支援論壇上積極回應。

我搬到 fly.io 主要是為了降低成本、擺脫對單一廠商的依賴,但結果效能也大幅提升。遷移到 SQLite 和 fly.io 之後,What Got Done 的大多數 API 請求速度都提升了 2 到 20 倍。

App Engine 與 fly.io 效能對比圖
請求App Engine 延遲(毫秒)fly.io 延遲(毫秒)延遲降幅
取得最新動態745.327.396.3%
取得使用者個人檔案300.029.390.2%
取得個人化動態牆572.068.788.0%
取得使用者完整紀錄215.762.071.3%
取得瀏覽次數349.720.094.3%
發布動態183.372.760.4%

舊專案近況

以下是一些我仍在維護、但已非開發重心的專案近況:

Is It Keto

指標2021 年 10 月2021 年 11 月變化
不重複訪客20,32117,790-2,531 (-12%)
總瀏覽量47,48740,722-6,765 (-14%)
網域評分(Ahrefs)11.015.0+4.0 (+36%)
AdSense 營收$230.64$235.36+$4.72 (+2%)
Amazon 聯盟行銷營收$27.76$26.25-$1.51 (-5%)
總營收$258.40$261.61+$3.21 (+1%)

Is It Keto 仍在背後默默帶來一些小額收入。這個月唯一的變動就是把它從 Firebase 搬到 Netlify,藉此降低託管成本。

登上 Hacker News 首頁

指標2021 年 10 月2021 年 11 月變化
不重複訪客100159+59 (+59%)
Gumroad 營收$75.27$94.57+$19.30 (+26%)
Blogging for Devs 營收$0.00$0.000
總營收$75.27$94.57+$19.30 (+26%)

我的部落格寫作課程這個月也有零星的銷售。我本來考慮要做黑色星期五特賣,但後來覺得長週末不想煩惱生意上的事,就作罷了。還好沒做,因為我反而很盡興地玩了 What Got Done。

Zestful

指標2021 年 10 月2021 年 11 月變化
不重複訪客613576-37 (-6%)
總瀏覽量1,4261,489+63 (+4%)
RapidAPI 營收$99.74$727.17+$627.43 (+629%)
總營收$99.74$727.17+$627.43 (+629%)

Zestful 這個月大幅成長,來自一位新客戶約 $700 的請求量。客戶名稱看起來有點眼熟,我翻了一下信件才發現,三年前我曾主動聯繫過他們,當時他們很客氣地拒絕了。看來他們需要幾年時間考慮一下。

總結

完成了什麼?

  • 發布了 TinyPilot 2.3.1 版本
  • 為 Voyager 2 上市做準備
  • 將 What Got Done 從 GCP 和 Firestore 遷移到 fly.io、SQLite 和 Litestream
  • 將這個部落格、Is It Keto 以及其他幾個靜態網站從 Google Firebase 遷移到 Netlify

經驗教訓

  • 當銷售開始呈現上升趨勢時,就要及早思考擴產。
  • 對小專案來說,Google Cloud Platform 通常不是正確的選擇。

下個月的目標

  • 讓 Voyager 2 上市。
  • 推出 TinyPilot 的品牌重塑。
    • 這次是來真的。
  • 備足庫存,讓 TinyPilot 不再為滿足需求而手忙腳亂。

:我在本文中提到了一些服務,但除了作為顧客之外,我與這些廠商沒有任何商業關係。我很討厭在部落格上看到看似真誠的產品推薦,後來才發現作者是靠推薦分潤賺錢,所以我刻意不使用任何會產生推薦獎金或聯盟行銷分潤的連結。

本文章由 muse-spark-1.2-contributor 進行翻譯

留言