在线IDE听上去就是一个好主意。当你难以忍耐敲些代码的欲望, 但趁手的笔记本却没在手边,看着陌生的屏幕就会意识到自己可能正要去做一件蠢事。 因为你可能需要安装一票环境依赖,等待各种进度条,直到发现还是干点别的好。 如果打开浏览器就能开始,那该多好啊。
但现实真的那么美妙么?
CodingStudio的体验
以前也用过jsFiddle和 基于JupyterHub 的一些在线编程的工具网站,但是这些工具都是限定在某些特定领域的, 并不能支持实践中的开发需求。 这样说CodingStudio其实是目前使用过的 唯一一款真正意义上的在线IDE。 但这款产品还在beta阶段,体验不算完美也可以理解。
总的体验:理论上可用,但是由于现阶段稳定性差,实际上难以应对预期的应用场景。
可用性
IDE在本质上是由两个基本部分构成的:编辑器和工具链。 前者解决写代码的问题,后者解决基于代码的计算(包括测试、编译、发布等)。
CodingStudio相应提供了:
- 看起来很像Visual Studio Code的编辑界面
- GIT支持,可切换环境的命令行终端以及对外的访问地址映射
有了这些功能其实一般性质的在线开发就基本可行了(显然尚不足以应对原生客户端开发需求)。
导入项目代码准备好环境,下一次打开CodingStudio就可以直接开工。难道这就不用去什么地方都要背着笔记本了?
稳定性
可惜现实还没有那么理想。
你想用它的时候,它不一定工作。 遇到最多的情况是无法利用工具链(无法进入工作空间或无法新建工作空间)。 隔一两天就发病一次,每次中断上几个小时,其实整个服务就没什么意义了。
稳定性问题的直接原因看上去可能有:
- 资源调度软件问题:CodingStudio背后可能利用了容器技术, 相应资源调度功能可能还不稳定
- 云计算资源配置过低:为了降低价格吸引用户,背后使用了低配的腾讯云建站主机,性能不堪重负
- 云计算资源本身不稳定:也可能是腾讯云建站主机这种云计算资源就不胜任, 毕竟它的产品设计初衷是服务中小网站的简单建站
但可能最具决定性的原因可能还是没有选择更好的技术架构和部署架构, 后面恐怕还是要做较大的调整。
启发
以上的体验有哪些启发呢?
- 打不着火再好的车也是摆设:对于在线服务,稳定性是最高优先级事项
- 在沙子上建要塞毫无意义:合理部署架构特别重要,还要选择靠谱的IT基建
- 卖最便宜的啤酒不一定引来最多的食客:不要替用户做成本最低的选择,用户并不一定觉得合用, 而应该在深入了解客户需求的基础上提供合理的价格方案
在线IDE产品探讨
首先看看和其他功能有交叉的在线服务有什么差别:
- 比在线编辑器多什么?多的就是工具链
- 在线IDE和CI/CD服务差在哪?最主要在响应速度,其次在灵活性
这样就可以得出一个初步的产品形态:中等水平的在线编辑器 + 近似os响应的计算环境
后者是需要更大功夫才能解决的,那再细究响应,可做进一步探讨,如:
- 编辑内容缓存:在线编辑器的自动保存不等于环境中代码的自动写入, 因为后者可能要去触发一些CI的功能。两者对频率的要求不一致
- 存储和计算分离:内容、设置和环境镜像需要持久化,但计算资源则是按量需求
- 性能伸缩:不同的语言框架,不同的步骤,对性能的要求差别巨大。 可考虑支持自动伸缩或不同规格的购买
- 灰度升级:严肃对待整体维护,生产行为经不起中断
这样,合理的技术架构和部署架构就能够逐渐清晰起来。
结论
在线IDE现在离值得一用还有距离,现有服务不稳定,甚至产品形态也有一些问题。 完全依赖它去做开发难免浪费精力,适度使用为宜。
但在云计算+5G的不断进步的背景下,在线IDE的继续发展还会是趋势性的,还是值得一试。