The rise of CDEs: Cloud Development Environments

Posted on:January 9, 2024 at 01:54 AM

Circa 2000. When I was a youngster version control was done with Tortoise SVN –although for me it was more like tortuous-SVN–. jQuery was the new kid on the block taking the internet by storm. Internet Explorer was the worst nightmare you could run into, and Firefox was the browser leading the way into what the modern web will become. 

I have been around the block, I’ve seen tech projects and companies have its hey day and go the way of the DODO –Google Wave, MySpace–. While others were constantly facing their next killer –seriously how many times are we going to try to kill poor ol’ PHP?–. 

Local environments have changed a lot too. To the point where we are moving away from them altogether. This last take is only possible because network access and hardware is really chip now-a-days. 

Running Terraform to instantiate a new server on someone else’s cloud has become way to easy. Create a Container for you application and deploy it using GKE feels like magic. But what blows my mind –right now– is how low we are setting the bar to simply-start-coding and become a productive-developer with tools like:

Read Gitpod’s promotional piece on CDEs: Cloud Development Environments. There you will finde Gartner’s estimation proposing that by the year 2026, 60% of deployments will be made using CDEs. 

From WAMP to Vagrant to Docker to the Cloud

In the mid 90s we had WAMP for the neophyte –beginner or novice– was and still is a solution to run Apache MySql and PHP on Windows. That was the holy trinity when one was creating MVPs on top of PHP. WAMP runs on your local computer. So the version of the software installed will depend on how much attention you placed into keeping it tidy.

I cannot tell you the sheer amount of times I had to listen –or even said– the hellish words "It works on my machine". Coders spit those words like a free-pass to simply be oblivious about the rest of the team and the performance of the project as a whole. It is just a mistake, but it is the one that needs to be addressed really fast so it does not become a habit.

By the early 2000s virtualization gained prominence because it enabled the creation of virtual environments within a single machine. This breakthrough allowed developers to run multiple operating systems and applications on a single host system, minimizing compatibility issues and streamlining development workflows.

With the advent of Virtual Box by late 2000s and the introduction of Vagrant by Hashicorp in 2010 we were able to run Virtual Machines to create local environments which will simplify the development process. This was great!. Except for one thing: You had a computer running inside your computer. So the physical resources had to be shared among 2 operating systems.

But the virtualization arena will not sit idle for long, by 2013Docker came to existence, and with it the idea of containerization came to prominence. By 2015 Docker was already a key player in the containerization landscape, and its technology was widely adopted across industries. The rise of micro-service-architectures and the need for scalable, portable solutions further fueled Docker's prominence.

It is this idea of containers –an evolved version of it– what is leading the charge into moving away from local environments. It is portrayed as the solution which will free us from the shackles of having to configure the right version of Node, or PHP or Python, or C, or Rust or whatever programming language you are working with.

We are moving into the age of Cloud Environments as a Service. Of course, that is another small monthly bill to pay. But if it can make your project more productive. The it is worth it.