在云的时代,我们已经能够轻松地在阿里云函数计算上,部署一个在线版 VSCode。然而 VSCode 的后端开发体验仍然不如 IntelliJ IDE。虽然市面上已经出现了 Eclipse Che、云效云端开发平台 DevStudio 等支持 IntelliJ 的在线开发平台,但是部署复杂、不够轻量。由此引发思考:能不能把 IntelliJ IDE 也搬上 Serverless?享受 Serverless 即搭即用、按量付费的特性呢?
我是如何使用阿里云的一个或者多个 Serverless 服务实现 Web IDE 服务?
jbr
、lib
、plugins
)拆到各自的函数层(layer
)中,以降低单次部署需要上传的包大小。相比官方给的默认示例,我有什么亮点?
我们实现了一个中间件管理浏览器与 Projector Server 之间的连接,用户通过 WebSocket 协议连接中间件,中间件将请求转发给 Projector,中间件可以监控连接,当连接断开时,会触发配置同步、代码同步,此外,每分钟也会定时自动同步,同步过程为打包(tgz)并上传到阿里云 OSS。此外,我们考虑到用户可能需要维护多个项目,所以开发了 workspace,当用户第一次访问时,会自动创建一个 workspace,可以在地址栏看到 workspace id,每个 workspace 都会同步到 OSS 中的一个独立的目录,当用户关闭并重新打开时,会根据地址中的 workspace id 恢复相应的配置和代码,以此来实现多项目管理。
在 IDEA 中实现多租隔离非常困难,即使前面我们已经为不同的用户分配了不同的 workspace,也无法阻止用户通过 IDE 中的 "Open Folder"、"Terminal" 功能访问其他租户的文件。好在阿里云函数计算的实例是天然支持安全隔离的,当
instanceConcurrency
设为 1 时,一个运行实例只接收一个连接,多个用户访问时,会自动启动新的实例,就不会冲突了。
接下来还要继续实现什么功能?
您可以体验 demo 站点 额度已经耗尽了,demo 站点已删除,也可以一键部署到自己的阿里云账号。
部署类型请选择“直接部署”,不要选择“通过代码仓库部署”,否则部署不成功。
需 Linux 环境,需安装 Node.js,按照 Cli 提示一步步操作。
npm i -g @serverless-devs/s
s init idea-webide
cd idea-webide
s deploy
为了防止因无法使用影响评测,下面我提供了视频演示。
bilibili.com/video/BV1md4y1P7ZA
idea-server
。imaegoo
。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。