刚刚写了一篇《Free Arch: 个人开发者也能做到支付闭环 - Jeff Tian的文章 - 知乎》,提到了其中的 Demo,也是一个老项目的复活,这里详解一下复活步骤。

OAM

首先,要再提一下《Free Arch: 使用 OAM 摆脱厂商锁定 - Jeff Tian的文章 - 知乎》,它利用开放应用模型,将老项目 uni-orders 复活,并分别部署到了 Okteto 和 Napptive。参考它,我又将老项目 v 复活,依葫芦画瓢,将它也部署到了 Okteto 和 Napptive:

v 的 GitHub Actions

https://github.com/Jeff-Tian/v/actions

做得还不完美。

测试其实通过了,但是由于使用了 killall node 的方式结束测试进程,导致显示是失败的。而对于 napptive,问题尝试先部署,再更新。如果已经是已部署状态(未被强行休眠),部署显示失败。但整体其实是成功的。

image.png

Okteto 上的 v

image.png

Napptive 上的 v

image.png

Vercel

但是这一次更进一步,还仅将 v 部署在了两个不同的 Kubernetes 集群中,还将它部署在了 Vercel 上!

k2e

v 这个项目,是一个很老的项目了,当时我不知道出于什么原因,将服务器和客户端的代码,杂揉在了一起。大概是为了将它们部署在一个地方,使用 pm2 + nginx 来对外提供服务。另外,在开发时前后端有很多代码是共享的,总之,不太像一个纯粹的前后端分离的主流项目。后端是 koa 写的,前端就是一个 create-react-app。

在将这种杂揉在一起的代码部署上 Kubernetes 时,没有任何障碍。没有想到,部署上 Vercel 竟然也如此丝滑顺畅,这得益于参考《Free Arch:将 Koa 服务部署到 Vercel - Jeff Tian的文章 - 知乎 》。即添加一个 api 目录,并使用 @jeff-tian/koa-to-express 将 koa 形式的中间件转换成了 Express 的中间件,就和 Vercel 的 Serverless 函数对上了!其实上文中有大佬留言,不需要做这个转换,只需要自己写一个 runtime 就行了。但是我还没有空研究这个 runtime,总之再次使用了自己的 k2e,又不是不能跑(逃……)。

Vercel 上的 v

image.png

复活老项目

这样,每一次提交代码,就将 v 同时部署在了三个平台,做到了真正意义上的“狡兔三窟”。不仅复活了老项目,还同时给它制造了多个分身。这一次,不是为了复活而复活,而是为了实现个人收款自动化的功能,不想从零开始,就在老项目(哪怕是一个屎山项目)上添加这个功能了。

https://v.pa-ca.me/orders

嗯,就是喜欢做这样的事情: