云平台还是自部署?
前言
最近在推上总是刷到一些关于 Vercel 等云平台收费高昂、自部署物美价廉、上云都是阴谋、Vercel 会导致供应商锁定等的言论,再配合某些博主晒出的细则不明的高额费用账单和一些自媒体的炒作,愣是把普通开发者搞成了惊弓之鸟,仿佛一夜之间,什么云平台都不敢用了,大家的当务之急,就是赶紧去采购一台 5$的 VPS 然后搞自部署,要快,速度慢了说不定房子都要赔给云平台。 这件事的相关话题愈演愈烈,最后搞得 Lee Robinson 不得不出来发了个推,说你其实可以把 Next.js 部署在任何地方, 如果你不会的话接下来他还要出个视频教程,教大家怎么在自己的服务器上部署 Next.js。事后 Next.js 也是马不停蹄地发布了一系列关于如何把自己部署在其他平台上的模板。
这场风波发展到这里就告一段落了,但是说到底,云平台真的就一无是处,而相对应的自部署就是万能灵药吗?
云平台好处都有啥
Vercel / Railway / Zeabur / Fly.io 这样的平台提供了无与伦比的开发交付体验:链接 Repo 仓库后就能自动化编译部署流程,从环境变量到 SSL 证书,从预览分支到多环境支持,还有一键回滚到指定部署等等这些项目托管中的痛点在云托管平台上都被很好的解决掉了,你可以试想一下怎样才能在自己的 VPS 上搭建一套同样的平台(不准用 dokploy 这类新出的工具作弊),反正我是十分头大。
此外你大可以放心他们的稳定性和数据安全,并不是说他们就一定不会出问题,只是说和一些不知名的 IDC 商家比起来,他们宕机的可能性要小得多得多,并且恢复时间也会更快,如果 Vercel 这样的平台宕机 48 小时还不能解决问题,那他们大概也完蛋了。但是宕机 48 小时对某些 IDC 商家来说并非不可能,意外丢失所有数据也不是一个新鲜事。
那么代价呢
这些云平台虽好,但是想要长远下去,总归是要赚钱的,不赚钱的商业模式不可持续。目前来看大家的赚钱模式都比较明了:那就是高额的资源费用。
对于 Vercel 和 Netlify,这个费用最可能是流量费用,其次是一些奇怪的服务,比如中间件调用,图片优化等服务。
而对于 Railway / fly.io 这样能托管任何容器服务的平台,这个费用就可以藏在任何资源背后:比如 Railway 有着天价一般的出口带宽价格: 1GB/0.1$(没有免费额度),作为对比,fly.io 价格是 1GB/0.02$,digitalocean VPS 的出口流量价格是 1GB/0.01$(前 500G 是免费的哦)。此外,Railway 的 CPU 单价和 Memory 单价都比同类平台更贵,这样下来,使用者的体验就是,尽管只部署了一个简单的 Node.js 后端 + 数据库,在几乎没有什么人使用的情况下,一个月要花2-3$左右,这个费用绝对和性价比三个字没有任何关系。
我的低价小鸡天下无敌
看了上面的资源费用,你迫不及待地想要逃离——买台 VPS!什么都能做,价格更便宜!但是对于御三家及一众大厂的最低配置而言,5$/1C1G 很难说得上比云平台更划算。于是你又听说在某些偏僻的角落里可以用相同的价格买到更好的配置,你决定欣然前往。尽管你很难真正得知商家的超售情况和实际配置,也很难在购买前提前体验商家的售后服务,总之,你付了款,拿到了自己的毛坯房。
接下来,为了部署你的应用,不管是选择简单的 Docker 手搓,还是使用 Dokploy 和 Kamal2 这种工具,你都要亲力亲为,毕竟自由 === 凡事都得你自己动手。
那么代价呢
- 你的 ACME 续签证书意外不工作了,你的网站证书过期了大半天,等你起床才发现这件事
- 你要经常检查你的数据库备份,有没有按时运行,有没有正确备份数据,最好每次备份后发一个 Webhook 通知到你的 IM 里
- 你启动了一个容器,它的本来作用是监控服务器或者是别的什么玩意,但是几天后它突然吃完了所有的内存和 CPU,并带走了你所有的线上业务,你又是第二天才发现这件事
- 你买了 Racknerd 的黑五促销机器,但是某天他们的机房着火了,你睡醒发现自己的网站打不开了,数据也没有了
- 你的服务器虽然还在运行,但是响应迟缓,IO 低下,什么也没干,占用却满了
- 你的服务器无法启动了!但是最近的一次备份似乎不够新,或者根本就没有…
怎么样?有没有已经觉得厌烦?如果选择了自己管理基础设施,并且又贪了小便宜,那么这些问题你大概率是绕不开的。
写在最后
说了那么多,总结下来就是:方便、性价比还有稳定可靠是经典的不可能三角。
想要省事方便,那就多付一点钱上云,想要省钱到极致同时你的时间不很值钱,那就去折腾 VPS。这其中最糟糕的一种情况是:为了省钱的同时浪费了很多时间去折腾 VPS,但是算一下浪费在上面的时间,其实是划不来的。