使用 GeekCode 在开发中分离计算和存储
背景
随着大数据软件的成熟和基础软件研发越来越火热,相关领域一直在寻找在开发过程中就可以把计算与存储服务的分离的方式,提高软件的研发效率。眼下云计算和容器化技术的成熟,加上网络带宽的不断提高,使得这种方式变得更加易于实现和落地。GeekCode 云 IDE 在云 IDE 领域率先使用这种方式,依托云服务将计算资源和存储分离。
近些年云 IDE 的技术被越来越多的硅谷技术大厂看中,Codespace,coder,replit,公司纷纷推出了自己的云 IDE 产品,这类产品更多的是在单一的开发环境中。单一开发环境是原来单机环境的模式,使用的时候会遇到很多问题,比如,在开发环境和云编译环境中同步数据,需要依赖 http server,传递代码和编译好的二进制文件。
解决方案
GeekCode 将开发环境的计算与存储分离,写代码的环境和编译代码的环境本质上只有计算资源的差异,在文件存储上应该是一致的。过去个人开发者需要在不同场景下线切换设备,编译/运行大型软件项目、测试分布式训练任务都需要用到不通算力的的设备。但因为存储不能移动,过去的是让文件在不同设备间移动,文件的移动带来的就是文件环境的重复配置与软件重复安装。能否让文件不用移动,而切换的对象变成 CPU/内存等计算资源,避免重复的复杂的手动同步过程?
通过 Parallel file system + 云资源的动态调度可以解决这个问题。Parallel file system 是一种设计在网络系统中的共享协同文件系统概念。parallel file system 系统需要支持多设备 IO,跨网络访问将文件 block 存储在集群上。Parallel file system 打破了数据分布的限制,在网络上做到数据的高可用、高可信和多路 IO。
GeekCode Cloud IDE 实现了云调度+ parallel file system 的功能,在云 IDE 平台完成计算的提升。
GeekCode 操作
打开 https://geekcode.cloud 就可以看到 GeekCode 的主界面,云系统的版本、云应用和资源日志。
创建工作环境
开发空间的构建可以选择使用的资源大小与环境镜像,和操作一个云主机没有区别,但是好处是环境中已经预置好之前的研发所用的应用和工具包,其中的 Web IDE 使用 VSCode 架构,兼容 VSCode 插件,开发者更容易的上手使用。
环境内对常见的依赖仓库下载也进行了优化,更快的下载依赖。
计算分离操作
进入 Web IDE 后可以看到,顶部右侧就是“编译加速”按钮
当前运行环境是 4 核 8G 的云计算资源,点击“编译加速”可以看到编译环境的配置。
新的配置中可以重新设置计算资源的大小甚至计算架构,未来可以支持 GPU 等新的硬件。
制定好新的计算资源已经运行指令后,点击“确定”,就可以在当前的文件系统上建立新的计算资源进行编译测试运行。
场景举例
大型项目的云编译
大型项目的编译比如 TiKV、Rust、Flink 编译动则几十分钟,运行起来本地的 mac 就卡住了。
可以借助 GeekCode Cloud IDE,使用分离式编译,既不用使用“钞”能力花费太多的钱,又可以在需要时获得极好的编译体验。编译完的二进制文件可以直接在开发环境中使用。
大数据项目云训练
大数据项目 AI 工程师也是无法在本地完成模型的训练和测试。使用 GeekCode Cloud IDE 可以方便的解决这个问题。
利用 GeekCode Cloud 的 parallel fs + 可扩展的计算资源,搭建训练环境。还可以通 checkpoint 进行容错,训练的数据集也完整的保存在开发环境中操作更加便利。
云主机的训练可以长期不关机,更适合大型模型的训练。
总结
Cloud IDE 是很多程序员的想要的开发方式,但更重要的是利用 Cloud 资源找到适合使用场景,让 Cloud IDE 可以更加有生命力!
版权声明: 本文为 InfoQ 作者【王泰】的原创文章。
原文链接:【http://xie.infoq.cn/article/68b5e99ba634e5cb272b45c85】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论