上个月,我与诸多同行们又讨论起了云 IDE 的事情。期间,我一直在想为什么云 IDE 不受开发者的欢迎?我回想了一下,为什么我不使用云 IDE?
- 云 IDE 不智能。我使用的是 IDEA 全家桶。云 IDE 都是基于 VSCode / Eclipse Theia,重构功能不够强大。
- 云 IDE 性能差。云 IDE 大量的智能感知、编程语言分析(LSP)依赖于远程机器,在这方面的性能受限于虚拟环境。
所以,我重新思考了一下,在云研发体系未落地之前,我们应该如何进行过渡。后来,在整理 DSL 想着的材料,联想到了在构建云研发架构时,定义的开发即部署。云端开发时,这大概就是我想要的答案,最初的灵感来源:Nocalhost。
它并非是一个新的概念,只是我做了一个总结。
云端开发时
云端开发时,将本地代码的运行环境放置于云端,代码修改能触发出预览版本/正式版本,即部署到关联的云开发环境上。
从本地 IDE 到云 IDE 是非常大的一步,直接跨越很容易扯淡。而云端开发时,则是在这个过程中重要的一步,用于构建稳定的云端开发时环境。它可以:
- 快速交付。加速开发、测试、联调、部署速度。
- 提供快速创新的机制。
- 渐进式地改变开发人员的体验。
它还可以:
- 消耗更多的服务器资源。
- 提升基础设施的复杂度。
但是,这是缺点了。
(PS:由于以下内容比较简单,外加最近东西写多了,手疼,我就快速过一下)
强力的弹性基础设施
对于一个以生产力作为卖点的工作,自然而然地,它需要一个强力的弹性基础设施。
服务器资源
基于现有的这种模式,每个开发人员需要多套独立的环境,它需要消耗一定的服务器资源。如果只是计算资源那倒是还好,但是,对于一些按实例付费的数据库是一个障碍。
不过,既然我们打算走向云开发的话,那么这个问题也不算是个问题。
快速稳定的网络
过去,我曾经在客户那使用过华为云桌面盒子,一种远程的虚拟桌面方案。因为要传输的数据量过大,所以极容易受限于网络。从实现机制上,我们只需要保持一个长连接,以传递少数的数据,如 Git patch,以这个量级的数据并不需要担心。但是,谁不想有更快地网络?
开发即部署
既然,我们的单人测试环境是开发环境,那么我们就需要支撑起:开发即部署。
动态路由分配
嗯,大家都懂的。但是从实践上呢,我们还需要添加一些路由机制与工具,才能让我们快速联调。
代码镜像
这个是个技术实施细节。
开发者体验优先
最后,回到开发者这边来,我们需要提供:
- 应用模板。加快新应用创建速度,最好 5 分钟内可以使用。
- 低配置环境。加快现有应用的迁移。
我本来应该制作一个相关的成熟度模型,但是最近躺平~~。
成熟的应用模板
嗯,就是模板对应的配置文件,与 Git 服务器一起使用不就很香?
低配置环境
其实,我是想说 DSL 的。
当然,最好是无需配置。
回想一下:过去的开发方式
过去,在我刚上高中的时候,申请了一个免费的服务器空间,可以简单地部署一些 PHP 应用。在这个时期,我们是怎么修改代码的呢?远程到机器上,直接修改,直接看到崩溃的页面。没有使用 Git,只能凭记忆回退。
后来,我会使用 Git,先在服务器上 commit 一把,重启服务。Nginx 404,继续回退,重启。
现在,简单了,崩溃,换个路由。
其它
相关实现:https://github.com/nocalhost/nocalhost