在2023年2月5日,当我从赫尔辛基飞往上海浦东机场时,并没有预见到接下来一年的生活将会是怎样的。经过几个月悠闲轻松的日子后,我开始了独立开发的征程。首先我会简要介绍一下成果,然后分享我对独立开发的看法以及一些技术层面的经验。 经过一年的努力,截至目前,我的成果如下:
- 支出2000美元,主要云服务支出
- 收入0,注册用户0
- 一个可运行的系统: https://lets-script.com
我不反对独立开发,但要认清现实,如果你的目标是通过独立开发发财致富,那么一个可能的结果是(开玩笑):
- 一年,众叛亲离
- 二年,妻离子散
- 三年,灰飞烟灭
如果你有这样的觉悟,或者不是从致富的角度出发,独立开发也是一种宝贵的经历。
接下来,我将分享我开发的产品以及一些技术经验。请允许我以一个业余选手的身份谈论这些想法。。
产品理念
我希望打造一个以脚本为核心的简单任务执行平台。市面上的产品往往认为Shell脚本不够友好,因此会在外层添加各种包装,有的使用YAML配置,有的采用自定义编程逻辑,类似于Github Action。然而,Github用一个checkout插件来完成git checkout的功能,我认为直接使用git更为简洁明了。如果你认为Shell脚本已经足够强大、方便且经得起考验,那又何必在外面再加一层,用一些功能不强大的方法来掩盖Linux脚本系统的强大呢?
lets-script.com允许用户部署他们自己的任务运行服务器,无论是在家中、公司还是在互联网上。目前,系统共享了两个运行服务器,一个位于日本,另一个在我家中。
不要迷信云和云服务
云服务和人工智能无疑都非常有价值。然而,在媒体和云服务提供商的大力宣传下,用户和开发者可能会被迷惑,失去独立思考的能力。
云服务虽然发展迅速,但单体软件同样在迅速发展。如果你没有充分的理由,就不要轻易将自有系统替换为云服务。比如,消息队列,用微软的Eventbus替代RabbitMQ?我认为毫无必要,何必轻易地将自己锁定在一个厂商身上呢?我最初也使用了Eventbus,但经过深思熟虑,最终还是切换回了RabbitMQ。我开始使用Azure的容器应用服务,但后来也切换到了Nginx架构,所有这些措施都使我后来可以轻松地迁移到其他云平台。
不要完全依赖第三方登录
要保持自有的登录系统始终可用,然后再选择性的加入协作登录系统。我的系统在初期也是使用第三方的登录系统。后来,架设自己的邮件服务器,重新实现用户登录功能。以email为中心的登录系统是非常可靠的系统。
Cloudflare的诱惑和局限
个人认为Cloudflare是一个非常具有特色的产品,也挺慷慨,一般个人项目基本上不需要花钱。在https和http场景下几乎是首选,我把所有的域名都交给Cloudflare解析了。比如我家里的一台服务器目前用作lets-script的命令执行服务器。网址是 https://worker-2.lets-script.com , 只要家里的服务器上安装一个Cloudlared服务,该https加密的网址始终可用。
但也不要盲目信赖Cloudflare。它并不适用于所有场景,有时使用你自己的Nginx才是最终的解决方案。比如,524错误,默认超时时间为100秒(企业订阅可以自定义超时时间),超过100秒就会返回524错误。而我的系统,在控制台交互的情况下,执行10分钟的任务是很常见的,因此无法通过Cloudflare代理。此外,text/event-stream或者ndjson都无法通过Cloudflare代理,至少目前官方不支持。虽然官方支持WebSocket,但我最终选择了WebSocket作为我的系统的解决方案,例如,当您运行系统的Hello World示例时,您可以清晰地感受到实时输出。
接下来谈谈我对独立开发的反思。
独立开发是低效的,是一种过时的生产方式
除了少数基于命令行的工具类软件,其它软件都需要横跨许多技术,它天然需要协作开发,用一己之力去完成是非常低效的。比如,我的系统,开始使用Reactjs,Gatsbyjs 使用js开发,后来不用框架了,用自己的半通用性js库,切换到typescript,然后大量自定义Codemirror的功能,在后端的Webflux之间来回切换,无论专注于那一边都可以将代码写的很稳定,但是两头兼顾,两边的代码质量都打折扣。
独立开发需要做好充足的准备,包括技术、资金、时间和心理准备。
由于社会形态的差异,中国人从事独立开发更需要有强大的心理准备,因为独立开发意味着你像一个工匠,将注意力转移到了产品之上,从而于社会产生距离,要控制好这种孤独感,保持身心健康。
如果你正在考虑独立开发,请务必慎重考虑。
如果你的主要目的是经济回报,更加需要慎重考虑。
最后,我的独立开发的产品已经完成,从azure平台迁移到一家日本公司的平台之后预计费用减半,就当作日常娱乐开支,让它长期运行吧。
此外,我正在积极寻找一份软件开发的工作,如果你有碰巧阅读到本文,请帮助我扩散和联系,非常感谢。
我的联系方式: jianglibo@hotmail.com