We use cookies to make your experience better.
As a development effort grows from a single developer, to a team, to an organization of several teams, so do the demands on development environments. In this article, let’s look at the range of architectures for environments that can support the evolution of software development in an organization. We’ll start with the simplest dev environment and finish with the most sophisticated:
The integrated development environment (IDE) is the developer’s portal into the development environment. It’s the place where the developer navigates and edits code, starts builds, and maybe runs a debugger. Because it runs locally, typically as a native app, it’s responsive and the developer can customize the IDE for their own needs with preferences and plugins.
But the IDE isn’t the whole picture. It’s just one component in the development environment. There are many other components that the IDE has little or no control over except to start, stop, and view progress.
This leads us to the simplest development environment, which is purely local.
You’ve already seen this setup in What is a Cloud Development Environment. In a purely local dev environment, the IDE and the rest of the dev environment run locally on the developer’s workstation.
Besides the IDE, the other components in the environment are the tools, code, package management, and so on. The IDE isn’t meant to install these components, administer them, or specify how they integrate. The IDE’s goal is to ease day-to-day coding workflow, not manage the environment as a whole.
In other words, the IDE expects a complete dev environment that’s already installed, configured, and ready to use. And that’s what the developer provides with their workstation: a place to host a working development environment for the IDE.
Your team has grown and so has your development environment. It's time to get a handle on growing complexity and the rising cost of workstation upgrades. A common solution is to transplant the entire dev environment to virtual desktop infrastructure (VDI) in the cloud.
The developer uses a remote desktop client, like RDP or VNC, on their workstation to log into a remote desktop instance. This immediately gives the development team more consistency by letting them create a single virtual desktop image that can be spun up for each developer. And it opens the opportunity to reduce contention for expensive hardware, since the cloud has practically limitless compute and storage resources.
The organization can reduce cloud spend by specifying ephemeral VMs, but this reduces customizability for the developer. And there’s the possibility that developer experience will suffer from network latency between the remote desktop client and the cloud, especially for developers far from the geographical location of the VDI.
The organization has grown into a few teams and they’ve outgrown the virtual desktops, or they want to improve dev experience and lower costs. A dev container can handle these challenges.
Development containers are an open standard and are well-supported by many dev tools and hosting services.
Notice that the developer gets to work with a local IDE again while the rest of the environment is in a container. So unlike virtual desktops, the dev container setup restores customizability and responsiveness to the developer experience.
Being a container, it provides a proven, reliable, industry-standard way to precisely specify the development environment once then deploy it consistently as many times as needed. The cost of provisioning containers can be cheaper than virtual desktops, since containers can run on less expensive services.
The organization’s platform engineering team can manage the dev environments with the same container infrastructure that they’re probably using already for other application deployments. They can also manage expensive hardware more efficiently, like adding more cores to the computing instance to reduce build times.
Cloud development environment (CDE) The previous architectures use general-purpose platforms to host dev environments. They aren’t specialized for software development, so administering them is left to developers or the platform engineering team.
Now imagine a platform that solves all the problems of the previous architectures with added functionality that’s dedicated to managing, provisioning, and monitoring dev environments. That’s what a cloud development environment (CDE) platform does. We’ve already covered the advantages of CDEs in Benefits of cloud-based development platforms, but here’s a recap for this article.
There’s an important distinction between a CDE workspace and a dev environment. The CDE workspace encapsulates the dev environment but doesn’t impose any constraints on how the environment’s components are hosted and run. They can all run in the cloud, on-premises, in a container, a cluster, a VM, or whatever combination the project needs.
Then there’s scale. Spinning up and tearing down dozens of environments is straightforward enough. A CDE is capable of managing and monitoring hundreds, even thousands, of dev environments.
A software development team today has many choices to set up their development environment. Just an IDE and a few configuration files on a workstation is good enough for a lone developer or small team. As projects and their dev teams grow, there are better ways to handle the complexities in setting up and managing dev environments.
Not sure what a CDE is? Check out What is a Cloud Development Environment.
Enjoy what you read?
Subscribe to our newsletter
By signing up, you agree to our Privacy Policy and Terms of service.