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%)

精简至单一产品,销量几近翻倍

由于供应短缺,我在 10 月份下架了 TinyPilot 价格较低的产品,专注于我们的高端产品 TinyPilot Voyager。这样一来,产品目录里就只剩下 Voyager 和一些销量不大的配件,于是我决定干脆去掉目录页。

说白了,我只是在网站导航栏里删掉了一个链接。

旧版产品目录页截图
旧版产品目录页截图

我在 TinyPilot 网站上做过的最有成效的改动,就是删掉了导航栏里指向产品目录页的那个链接。

在上个月的复盘中,我提到销量开始呈上升趋势,并猜测这是否与精简产品线有关。经过又一个月的观察,我相当确信这一举措带来了巨大影响:

整合为单一产品前后 TinyPilot 销量随时间变化的图表,整合后呈上升趋势

将网站整合为单一产品前后,TinyPilot 的周销量变化

以前我们的销量也曾出现过激增,但每次都伴随着明显的外部事件,比如在 YouTube 上被提及或在热门网站上获得评测。销量会猛增,随后慢慢回落。

而自从精简为单一产品后,销量一直维持在以往峰值的高位,却没有像那些一次性事件带来的激增那样逐渐回落。

如果销量增长确实源于去掉目录页,那这将是我在 TinyPilot 上做过的所有事情中投资回报率最高的一件。仅仅删掉一个链接,就带来了 62% 的销量增长!

成长的烦恼又回来了

在 TinyPilot 创立的头六个月里,我一直在疲于应对增长。销量每隔四到八周就翻一番,我不得不不断寻找新的供应商、重塑流程来扩大规模。那种增长固然令人兴奋,但也让人精疲力竭。好在 2021 年的大部分时间里,业务进入了相对稳定、可预期的节奏。

最近这次销量增长又把成长的烦恼带了回来。我们针对销量激增有应急预案,今年也一直很管用,但对于这种持续性的增长,我们却没有相应的预案。

电源连接器告急

首先,我们发现电源连接器的消耗速度太快,还没等到下一批电路板到货就会用完,这将导致我们无法继续销售 Voyager。

TinyPilot 电源连接器照片

我们差几天就把 TinyPilot 电源连接器的库存用光了。

我把电源连接器的单独销售设为缺货,这才刚好放慢了消耗速度,让库存撑到了新货到来的那天。

[顺带一提:如果你好奇我刚刚还大张旗鼓地说只卖 Voyager,为什么还在卖电源连接器,我可以解释一下。通过我的 DIY TinyPilot 指南,仍有一些指向 TinyPilot 次要产品的有效链接,但用户如果只浏览 TinyPilot 官网,是很难发现这些页面的。]

排线告急

接着,我们的排线也开始告急。我们通常批量采购,手头存量很大,以至于都不值得放进库存系统里追踪。但正因为没有追踪,我们没注意到上一批订单延迟了。库存一度只剩下 30 根,只够生产几天的 Voyager。

TinyPilot 使用的排线照片

就因为 70mm 排线快用完了,TinyPilot 的销售差点陷入停滞。

我们用的排线尺寸并非标准规格,需要专门定制。难道要因为这么个小小的排线就停售数周吗?

幸运的是,供应商加急处理了我们的订单,几天内就送来了新排线。我还恐慌性地额外追加了 1500 根,短期内应该够用了。

另外,我们决定把排线纳入常规库存系统进行管理。之前那种粗放式管理让我们很难分辨“可以从容下单”和“十万火急”之间的区别。

扩大 3D 打印产能

最后一个短缺问题,也是我们至今仍未解决的:外壳。我们一直采用 3D 打印来制作外壳,因为这样可以快速迭代。我们使用的 3D 打印材料质感高级,经常收到客户和评测者对外壳品质的好评。

问题在于 3D 打印速度很慢,尤其是我们使用的这种材料。打印一个 Voyager 1 的外壳需要 8 小时,Voyager 2 则需要 12 小时。我们的 3D 打印供应商已经为我们增购了一台打印机,但我预计切换到 Voyager 2 后,连新增的产能也会不够用。遗憾的是,供应商不可能每次我们销量上涨就去买新打印机。

短期内,TinyPilot 的欧盟分销商改为本地打印外壳,不再从我们这里采购,这为我们的打印机减轻了约 30% 的负担。长期来看,我正在与 3D 打印供应商合作,探索其他打印更快但仍具高级质感的材料。或许也该重新考虑注塑成型了,虽然前期需要投入 2 万至 4 万美元,但每周可产出数千个外壳。

将个人 side project 迁出 Google Cloud Platform

在这类复盘中,我通常聚焦于主营业务,但过去一个月里,把个人 side project 从 Google Cloud Platform(GCP)迁出来倒是件挺有意思的事。

我大约八年前开始使用 GCP。当时大多数云服务商托管一个 Web 应用每月要收 10 到 20 美元,而像 App Engine 和 Firebase 这样的 Google 服务可以为小型项目缩容至每月 0 美元,这让尝试新想法变得很有吸引力。如果知道不必无限期地每月付 20 美元,我就更愿意发布新项目。

如今,GCP 对于小型项目来说通常不是好选择。服务臃肿复杂,创建一个最基础的 Web 应用并完成部署,光是折腾设置和权限就要花上大约一小时。好在现在有不少优秀的 GCP 替代方案,不仅成本更低,开发体验更好,客服支持也更到位——准确地说,是至少还有客服。

因为用了 GCP 这么多年,我的很多 side project 仍运行在 Google Cloud Platform 上,服务费也越积越多。上个月我利用晚上和周末的时间,把其中最花钱的几项服务迁了出来。

以下是大规模迁移前,我在 GCP 上的花费情况:

GCP 费用图表,2021 年 8 月至 10 月合计 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 后不到 30 分钟,它就已经通过 media.whatgotdone.com 这个域名来分发我的 Google Cloud Storage 存储桶了。我只需要告诉 Bunny 我的 GCS 存储桶地址和想要的子域名,再添加一条 DNS 记录就行。

BunnyCDN 回源设置页面截图

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 美元,到了 7 月却突然飙升到每月 10 到 15 美元,原因不明。

好在 What Got Done 是一个标准的 Go Web 应用,并不一定非要跑在 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 进行翻译

评论