Did you know that you can write, run and debug code in the cloud?
Dale Morson, a Cloud Systems Developer, shares an introduction into cloud IDEs.
By taking advantage of a cloud-based development IDE (integrated development environment), or just cloud IDE, you can drive value to your cloud strategy. We’ll explore the challenges of desktop IDEs and introduce cloud IDEs, then we’ll glance over the available options. Finally we’ll list some of the benefits of using a cloud IDE, as well as some of the challenges you may encounter.
Challenges of Desktop IDEs
Developer tools like desktop IDEs are installed, configured and maintained locally on a managed or personal device. This can be time consuming and problematic; installation packages can be tens of gigabytes in size and take some time to download, install processes are dependent on local compute power, existing installed dependencies can cause problems with new tools and local environments and versions can differ between devices. This in turn creates the “Works on my machine” situation. This can be a frustrating process for support and developers. Saying goodbye to a desktop IDE and hello to a cloud IDE can remove these challenges.
What is a Cloud IDE?
A cloud IDE can be accessed securely from a supported web browser (Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari etc.) allowing almost instant access to the most popular tools and programming languages giving a developer or engineer everything to write, run and debug code. There are no local dependencies to be installed or maintained and can be accessed on any device (laptop, tablet and phone), from any location, with just a set of credentials. Perfect for secure hybrid or work from home scenarios!
The following screenshot shows Visual Studio Code installed locally as a desktop IDE.
In contrast, the following screenshot shows the Chrome browser and Visual Studio Code running as a cloud IDE.
What Cloud IDEs are Available?
Now that you know what a cloud IDE is, let’s take a look at some of the options available.
Microsoft’s path to providing a cloud IDE started with Visual Studio Online which was later renamed to Visual Studio Codespaces. These were instances of Visual Studio Code hosted in the cloud, accessible from a browser. When Microsoft bought GitHub in 2018, Microsoft Visual Studio Codespaces became GitHub Codespaces. This service still provides an instance of Visual Studio Code running on high performance virtual machines but with tight integration to GitHub, the largest code repository. Using GitHub Codespaces would allow you to use any language and deploy to any cloud platform.
A GitHub Codespace is a developer environment running as a container that includes a clone of a GitHub repository, the required programming language runtimes and dependent tools. You can access the environment using a cloud IDE which is a browser version of Visual Studio Code. GitHub Codespaces uses Configuration-as-code, allowing you to tailor an environment to your needs and ensure every developer has a consistent and standardised experience.
Cloud9 was an open source product until 2016 when it was acquired by Amazon Web Services (AWS). As this is an AWS service you need an AWS account to use it which means it is tightly woven into AWS, providing a seamless experience for developing serverless applications. This makes AWS Cloud9 perfect for AWS developers. There is also direct terminal access that includes sudo privileges to the managed Amazon EC2 instance that is hosting your development environment and a preauthenticated AWS Command Line Interface. Real-time collaboration is easy with Cloud9 with only a few clicks. Developers can pair-program together, instantly chat and debug code with one another all from within the cloud IDE.
Google Cloud Code
Google Cloud Platform (GCP) offers Google Cloud Code as their native cloud IDE. Just like AWS, Google’s offering is tightly integrated into their own services, making it perfect for GCP developers. It has integrated support for Kubernetes and Cloud Run applications. Cloud Code can be accessed using a Visual Studio Code extension, the JetBrains IntelliJ IDE or the Google Cloud Shell Editor.
GitPod is a container-based platform that can spin up ready-to-code developer environments. GitPod uses Configuration-as-code to configure standard and secure environments that spin up fresh when you need them and close when no longer required. A GitPod workspace includes everything you need including the project source code, a Linux shell, a file system, the full Visual Studio Code editing experience including extensions, language support. Supports all major Git platforms including GitHub, GitLab and BitBucket.
When you can Benefit from Cloud IDEs
The following are just some of the benefits:
- ) Access cloud IDEs on any device, from any location, securely using just a browser. Previously unsuitable low powered devices such as Chromebooks, can now be used for cloud-native development.
- ) Code in real-time with others and collaborate remotely. Scale computational workloads with ease, no longer restricted to local compute power.
- ) Support hybrid and remote working, allowing quicker on-boarding and off-boarding. Useful for Business Continuity in these uncertain times.
- ) Apply least privilege principles i.e. no additional access required such as corporate networks or VPN to access a cloud IDE.
- ) Centralised control of standardised tooling leading to increased governance and decreased usage of shadow IT tools. Such centralised asset management may result in meeting compliance regulations and increased data protection.
Current Challenges of Cloud IDEs
While there are numerous benefits there are still some challenges that must be considered:
- ) Cloud IDEs are online-only, you need an internet connection to work and poor home broadband connectivity could impact certain users (i.e. living in remote areas with unstable and slow connections).
- ) While a cloud IDE is perfect for certain scenarios like cloud native development or platform engineering, there could be limitations for developing full Java or .NET apps with frontends. For example Visual Studio Enterprise provides comprehensive tools that can’t be matched in the cloud right now.
- ) There are cultural changes that would need to be made, including ways of working that could be difficult to adopt especially for experienced developers. It would require moving away from local, familiar and customisable tooling.
A cloud IDE can drive value to your cloud strategy no matter what stage of your journey into the cloud. There are many cloud IDE options available that can align to your requirements, including those that are tightly integrated into their respective platforms such as AWS Cloud9 and Google Cloud Code, and others that are cloud-agnostic promoting cross platform development like GitHub Codespaces and GitPod. Your adoption approach for cloud IDEs is dependent on your cultural working practises, however in a DevOps culture you can follow an iterative rollout starting with small agile teams, and then work towards scale using cloud IDE champions. While there are still challenges for using cloud IDEs, there are many more benefits and practical scenarios that provide only a glimpse of what’s possible today