Uber通过远程开发环境Devpod提升生产力

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 的案例中得到了印证。

阅读 26
0 条评论