2 min read
Zeno 与快速交付

TL;DR

人生苦短,专注迭代。你只管写代码,剩下的交给 Zeno

业余项目中的精益

程序员不一定都会脱发,但大多数都会有博客。有的人可能会用 CSDN(没问题的啦)、简书、Medium、博客园来分享自己的内容,也有一些人会选择自建博客,我是后者中的一员。 从最早的建站程序到后来的 WordPress、Typecho 再到 Jekyll、Hexo、Gatsby、Ghost 等等,从使用别人的主题到自己写主题再到自己写静态渲染。等程序折腾满意了,又开始折腾 TLS 优化、CDN 等一箩筐琐碎的东西。然后到头来发现,似乎并没有写太多的博文。如果说「博客是一个 Side Project」,那么它一定凉了。曾经还看过特别逗的一个梗「Setup Kubernetes cluster for your blog」。倒腾是挺好的,但有时候容易让自己迷失、沉浸在逐个击破一些无关紧要的难题中获得的喜悦而忽略了主线的推进。

Side Project 最终要的是什么:提出一个想法简单验证然后实现一个最小版本然后去验证它,如果可行就继续下去!

阻碍程序员做 Side Project 的原因除了行业的卷,还有一些就是:过程冗长,容易深入到特定的技术深度导致项目停滞。所以,需要点东西来优化这个过程比如「构建-部署-分发」,减小项目落地阻力,达到「你只管写代码,剩下的交给我」的目标。

在大概评估了市面上的服务后,决定撸一个。你可能会好奇一个问题,为什么不用市面上现有的服务比如 Heroku、GitHub Pages、Netlify 等等?这个问题将在后面进行解答。

BTW 如果你能看到这,说明你可能也有这种共鸣。

Why Zeno?

Zeno 命名来源于大学时期买的那辆死飞的车架名称,同时也是我英文名的重组。

通常我们开发完/迭代完一个应用会将代码推送到镜像仓库,然后通过 CI/CD 若干工具流程 (例如 GitHub Actions)最终部署到服务器上,而后由一系列运维操作让应用终端正常使用。 在上述过程中,我们可能考虑到的问题点会有如下:

  • CI/CD 承载节点的额度是否够用?如果不够,我应该加购多少?
  • CD 到最终部署环境的凭证怎么安全存储管理?脚本能不能快速复用到其他项目?
  • 服务器买 XX 云还是 YY 云好?哪家有优惠券?
  • 我的博客需不需要跑在 Kubernetes 上?来个集群?
  • 域名没备案,海外的话网络又不太好。emmmmm
  • 等等一箩筐问题。。。

其实大部分服务并没有我们想象中的那么复杂或者需要那么高的灵活性、定制性,试想如果新服务要快速迭代落地,那么写完第一版代码就简单两三下操作就能部署上,而往后的迭代甚至只需要一次操作就能完成。那岂不是很爽?

在我业余时间的开发中,也会遇到上述类似的问题。有时候写完一个简易的工具类 API 服务后,就会在部署、网络、持续集成上消耗大量的时间和热情,可能最后到头来东西没做成、热情散去、什么都没了。所以我希望 Zeno 能够:适配多种语言、框架使用尽可能无感的提供构建、部署、弹性、分发能力

为什么不使用 XXX 而是 Zeno?

长话短说。

  • 公有云:服务靠谱、文档全、价格贵、功能上倾向通用可能不是那么舒服。
  • Heroku、Netlify、Vercel、CloudFlare Worker:也都很不错,但要么支持的应用不够丰富(比如 NodeJS only)亦或者在网络分发层受限于大中华局域网的原因很尴尬等等。

进一步来说,就简单说:有 AWS 的存在,GCP 也有搞头啊。每个东西都会有其面向的用户群,或大或小。并不是「既生瑜何生亮」,也不违背「精益」,解决问题、痛点最重要。

Zeno 初体验

在开发 Zeno 的时候,就考虑到需要整一个文档性质的官网。原来的想法是,我不能部署在 Zeno 上面让它们成为套娃 🪆。然后琢磨琢磨觉得麻烦,就继续写代码了。代码写差不多后, 又到了部署官网的时候,想想算了啊套娃就套娃呗⚠️ 真香警告 ⚠️。然后拿 Gatsby 和 GayHub 上别人撸的 starter 建议搓了一个文档(截止本文发布,因为性能问题和正好需要个 Changelog 和首页所以改用 Nextra 了)。

从此,我修改文档和发布的过程就变得极其丝滑(因为 Zeno 还没有完全跟 GitHub Webhook 实现梦幻联动,所以暂时不提供推送触发功能)。

$ // making changes
$ git commit -m 'blah blah' && git push
$ zeno deploy zeno-site

如果有人问,你这个循环依赖了啊,怕 Zeno 挂了的话文档也看不了。别担心,我们提供「DaaN」全名 Disk as a Network 服务实现稳定但不一定高速的「硬盘上网服务」,您可以选择 DC SSD、桌面级 SSD、垃圾 HDD 等作为介质通过国家快递网访问。

开坑

当前比较建议的玩法是可以优先考虑把博客、前端、文档类的项目往上部署(如果还没支持到,可以加入社群反馈一波)。目前 Zeno 处于 Alpha 阶段,每个用户都会有一定的免费额度可以直接玩耍。当然可能 bug 会有一些,然后引导体验啥的尴尬点。

像 Golang、NodeJS 也基本支持到位了,然后也有些许五毛钱 MySQL 提供。默认提供一个生成的域名访问,可以自己绑定域名(也不用 care 证书签发,但也能用你自己提供的证书)。网络方面将会针对大陆网络环境做特别优化,尽可能提供好的访问体验。至于 SLO 嘛,刚开始 oneman 嘛就嘿嘿嘿嘿还成。

更多的内容可以前往 Zeno 了解,亦或者前往 社群 直接沟通。

这篇博客写完了,来去 zeno deploy 一把