不管是独立开发者还是数人小团队,打造高效试错的环境至关重要。获取更多的用户、把产品做好永远是第一要务。因此,我写这些并不是鼓励你在这些工具、平台上尝试,只是记录自己所使用到的一些平台和工具。
代码直接托管在 gitlab,免费薅的羊毛包括:
如果你们是一个几人团队完全不需要自建,当然也可以用 Github。
Vercel 把与 Next.js 云函数的融合做得非常好,10 个 endpoint 内是免费的,但是超过了则需要 $20/month,我一般都是不同的账号注册来薅羊毛,写一个非常小的项目时非常方便。也有 redis、postgress 这样的存储可以用在小项目上。
但有一点需要注意,Vercel 的 endpoint 如果超时超过了阈值是需要额外收费的,如果做 StableDifffusion 这样的 API 对接接口是非常耗时的,不建议放在 Vercel 上。否则可能早上刚起床房子就不是你的了!
我一般使用 netlify 在放静态类型的资源,比如官方教程或者文档这些,然后再 CNAME 到自定义域名上就可以了。
以上两个平台都支持 Gitlab 或者 Github 代码更新了自动触发 CI/CD。
这个大部分接触过全球部署或者产品海外发行的工程师应该都知道。而且基础的功能都可以免费薅到羊毛。
以下是我主要使用的两个功能:
如果项目的复杂度大到一定程度了,或许你开始考虑要上云了,那么恭喜你,至少算是“活下来了”。大部分 side project 基本是活不到这一步的。
到这里,你可以选的云厂商很多,包括但不仅限于:AWS/Google Cloud/Microsoft Azure/DigitalOcean 等等,这些厂商同样有各种各样的羊毛可以薅……
我用了 Vultr,它同样有 Free Tier Program 可以节省一点费用。
我直接用了 Vultr Kubernetes Engine (VKE),这样不用自己来维护集群。
Gitlab 可以非常方便的连接 Kubernetes(参考文档)
连接成功后,所有项目都可以共用它。
Gitlab PR 触发 Gitlab CI/CD,使用 Gitlab shared runner 进行 lint、自动化测试。
在 Gitlab shared runne 上 build Docker 镜像,并 push 到 Gitlab Container Registry。
大致流程如图
如果一个域名一个服务,那么直接用一个 LB 就可以了,然后你可以把 LB 的流量导到对应的 Kubernetes Headless Service 上。
稍微复杂点,你有多个子域名,多个服务。比如 api.example.com、console..example.com 等等都区分开来,你可以选择:Nginx Ingress Controller,然后用 cert-manager 来管理 HTTPS 证书。
更复杂可能会引入类似 Istio 这样的 Service Mesh 方案,它的好处或者如何使用我这里不再重复介绍,具体可以看官方的文档。我觉得比较好用的方面:
我目前就一直在用 Istio,目前感觉还不错。当然需要承认 sidecar 的方式是会带来一定的性能损失的。