Uber 创建远程开发环境 Devpod 提升开发者体验与生产力
Uber 工程师为了解决采用代码单库(monorepo)带来的诸多问题,创建了名为 Devpod 的远程开发环境(RDE),以提升开发者的体验和生产力。
Devpod 的设计理念与优势
Devpod 的设计理念与其他近期推出的远程开发环境(如 GitHub Codespaces、JetBrains Space 和 AWS CodeCatalyst)一致,主要包括:
- 快速项目设置:能够在几秒钟内完成项目配置。
- 集中化的安全性:通过云端强大的处理能力提升性能。
- 高性能计算:利用云端的 90+ 核心和数百 GB 内存的机器进行实验。
单库(Monorepo)的复杂性推动决策
Uber 采用远程开发环境的主要驱动因素是其庞大的单库(monorepo)的复杂性。该单库整合了超过 4000 个服务、500 个 Web 应用以及数千个仓库中的许多工具。单库的采用带来了以下好处:
- 更好的依赖管理。
- 一致且通用的库版本。
- 集中化的构建平台(Bazel)。
- 支持标准工具和流程。
- 提升代码可见性、协作和共享。
单库的挑战与 Devpod 的解决方案
尽管单库带来了诸多好处,但也导致构建速度变慢,尤其是在笔记本电脑和远程工作时,克隆和设置项目需要数小时。通过 Devpod,Uber 工程师显著提升了多项关键指标,例如 git status 和 Go 构建时间,速度提升了 1.8 到 2.5 倍。
Devpod 的技术实现
Uber 选择了基于 Debian 的 Docker 镜像和 Kubernetes 作为部署平台,并在多个地点部署 Kubernetes 集群以减少延迟并更接近工程师。为了简化管理,Uber 还创建了集中化的 Web 应用,并提供了保持所有环境更新的机制。
未来的改进方向
Uber 工程师仍在努力改进 Devpod,目标是:
- 加快项目克隆速度。
- 引入临时环境。
- 提升 IDE 体验。
- 允许团队特定配置。
开源可能性与行业趋势
目前尚不清楚 Uber 是否会开源 Devpod,但其迁移到远程开发环境的决定可能预示着对 RDEs 的日益增长的兴趣,这也在 Slack 和 GitHub 的案例中得到了印证。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。