Dropbox Syncs 1000 Developers with Coder

Challenges

  • In-house provisioning was difficult to maintain
  • 1000 developers to migrate
  • Development environments span cloud, ML, and desktop targets

Outcomes

  • 1000 developers migrated to Coder in 4 months
  • 30% reduction in cloud computing costs
  • 50% reduction in startup times for some projects

Industry

File hosting for consumer and enterprise

Number of developers

1000

About 1000 developers build Dropbox’s capabilities for flexible, reliable, secure file syncing and storage. Dropbox gained its fame as one of the biggest providers for cloud file management on the planet, helping 700 million users share and store files in the consumer, professional, and enterprise markets. Matt Kulka is an Infrastructure Software Engineer at Dropbox. In the past he’s helped big companies like Facebook and PayPal with operations, devops, and software engineering. He and the five other members of the Dropbox Developer Environments team are responsible for providing and managing the developer infrastructure. We talked to Matt about the challenges of keeping 1000 developers productive and happy.

Challenge: A thousand spinning plates

Matt’s team provides developer environments as VMs running in AWS EC2. Each developer gets their own EC2 instance. They use GitHub for version control. For IDEs, most developers use JetBrains or Visual Studio Code.

The environments come in 2 major flavors: One for Linux, the other for Windows. While both run on AWS EC2 they each use different AMIs and other configurations. From there, the engineers can customize their environments. Matt described the 4 major kinds of environments that Dropbox developers work with:

  • Cloud: The majority of developers work on Linux VMs for the Dropbox web front-end and cloud back-end. They rely on Bazel for building and testing.
  • ML: ML engineers work with GPUs for language model training.
  • Docker containers: Some developers work with open source tools that are unique to a project. Docker provides a convenient way to run these tools.
  • Desktop: Developers working on desktop and mobile apps use VMs that target specific OSs, like Windows, macOS, and so on.

Prior to Coder, Dropbox used an in-house solution to provision development environments. But there were some drawbacks:

  • It used a monolithic design in Python, so extending it to support new environments was time-consuming. It meant refactoring code to add features, then documenting those features so developers could take advantage of them.
  • It was command-line driven, which limited the developer experience for interacting with it. For example, to start a new environment, a developer had to carefully follow the documentation to manually enter commands at the terminal.

Dropbox needed a tool that was flexible enough to handle their wide array of development environments and make 1000 development environments easy to manage.

Solution: The leap to Coder

To evaluate a few solutions, the Developer Environments team assigned two people, Matt and a colleague. They discovered that some solutions weren’t platform-neutral, requiring Dropbox to lock into walled networking environments. Others were not yet mature or didn’t have the right mix of features. Coder met Dropbox’s requirements without imposing these limitations:

  • Coder runs anywhere and can be deployed on any infrastructure.
  • Developers use their existing IDEs, tooling, and dot files, which eases adoption.
  • Governance is built-in with features for monitoring, scaling, auditing, and cost control.

With Coder as the winner, Matt and his teammate needed to migrate 1000 developers. They did it in three major phases:

  • Phase 1: Trial period. Developers were invited to try Coder to compare it to the in-house solution. Matt and his colleague evangelized the Coder features that were the most attractive to their developers: the discoverable UI, general ease of use, and the ability to run multiple workspaces.
  • Phase 2: Migration deadline. At the end of the trial period, about 400 developers had already switched to Coder on their own. To get the other developers into Coder, a deadline was announced to make the switch. This also let Dropbox shut down the remaining legacy environments, which saved compute and support costs.
  • Phase 3: Fine tuning. They then had to handle the edge cases from the many new Coder-based environments that developers were using. They did this with Coder’s flexible and extensible declarative templates.
  • The result: The numbers are impressive: Only 2 people migrated 1000 developers to Coder in just 4 months.

Results: Focus on developer experience, let Coder do the rest

Since then, Dropbox has steadily improved developer experience:

  • Out of the box, Coder gives developers a discoverable, point-and-click user interface. This, in turn, relieves the Developer Environments team from designing the UI aspects of their solutions.
  • Environments no longer waste cloud resources. Developers can easily start and stop workspaces as they need. Coder can also schedule workspaces. The result is a big reduction in cloud computing and storage costs, which dropped 30%.
  • Leverage existing resources. Dropbox can now look at ways to use Coder as a single place to mix various compute resources, like combining both cloud and on-prem capabilities in the same development environment.
  • Supporting a new developer environment is easier. One of the attractions of Coder is its use of declarative Terraform templates. This provides a consistent, turnkey experience, so Dropbox focuses on enabling tooling rather than dealing with infrastructure and user interface.
  • Let developers customize their workspaces. Template parameters add flexibility while still keeping the templates maintainable. Templates can also add custom dotfiles and other info that the developer might choose.
  • Developers start their environments in less time. A template can pre-warm a workspace by building a project before the workspace is launched. The developer gets an environment that’s ready to use at the click of a button. Matt estimates that startup times for projects dropped from about an hour to 15 minutes.

Outcomes

  • 1000 developers migrated to Coder in 4 months
  • 30% reduction in cloud computing costs
  • 50% reduction in startup times for some projects

Dropbox is ready for more

With the transition to Coder complete, Dropbox is looking forward to leveraging more of its advantages. The time spent on maintaining and extending their in-house platform is now spent on improving developer productivity. Coder has also opened new opportunities, like making better use of their on-prem GPU computing. With 1000 developers and a growing variety of development environments, the Dropbox Developer Environments team is letting Coder spin those plates while they work on more interesting things.

Subscribe to our Newsletter

Want to stay up to date on all things Coder? Subscribe to our monthly newsletter and be the first to know when we release new things!

Challenges

  • In-house provisioning was difficult to maintain
  • 1000 developers to migrate
  • Development environments span cloud, ML, and desktop targets

Outcomes

  • 1000 developers migrated to Coder in 4 months
  • 30% reduction in cloud computing costs
  • 50% reduction in startup times for some projects

Industry

File hosting for consumer and enterprise

Number of developers

1000