AWS Cloud9 Streamlining Innovation Developments at DX

Seamless Cloud Integrations at Anytime and Anywhere

Aramayis Orkusyan
DX Innovation at Fresno State
5 min readSep 27, 2019

--

Hub of DX at Fresno State has adopted AWS Cloud9, the Amazon’s cloud-based IDE, as the unified development platform to help streamline software development in a diversified group of developers. - Max Tsai

In this article, I’ll describe my experience with integration AWS Cloud9 so far and how others can benefit from using this service.

Anyone who has worked in or managed a software development team is familiar with the challenges of getting developers productive as quickly as possible and keeping them productive regardless of any changes. These challenges are amplified if the developers are diversified with respect to skill levels, differences in development environments such as the operating system or IDE they prefer to use, and even the hardware in their development machines. It can take a long time for new developers to set up their development environment if they aren’t familiar with the tools or working in a terminal. If a developer’s environment configuration accidentally breaks or their machine needs to be replaced, the developer needs to spend time setting up a new development environment again. Some developers might not even have enough processing power in their development machine to run all the tools they need on a daily basis.

Example Screenshot

Benefits of using AWS Cloud9

Isolated workspace for each project.

If you’ve ever juggled multiple software development projects in parallel, you’re well aware of the headaches cause by dependencies on different versions of the same library, environment variables, etc. between projects. To avoid these headaches, developers typically run separate virtual machines or containers for each project. If you’re running on low budget hardware, however, your machine will start to feel sluggish once you launch a few VMs.

AWS Cloud9 provides the same isolation benefits as virtual machines without slowing down the performance of your local machine. Behind the scenes, each Cloud9 environment hosts and runs code on its own EC2 instance. Creating separate Cloud9 environments for each projects ensures projects remain isolated and dependency free.

Save time on environment setup and get productive quickly.

I can’t tell you how many hours I have spent over the years either setting up my own development environment or helping a new developer set up theirs. You could try writing a Bash script to automate things, but Windows doesn’t like Bash scripts and even Mac and Linux scripts diverge quickly. You’ll quickly find that you have to maintain three separate scripts for your team.

With AWS Cloud9, you can write, run, and debug code with only your web browser. There’s no need to download software, configure your environment, or set up your IDE and its configuration on each of your computers. Creating the Cloud9 environment takes less than a minute, and even the default AMI comes with 90% of the things you’ll need (Docker, Git, AWS CLI with temporary keys, most of the widely used programming languages, etc). It even comes with a built-in terminal with a real, direct SSH connection to the EC2 instance running the environment.

If your projects requires something a bit more custom, Cloud9 gives you the option to use your own EC2 instances. Simply launch and configure an EC2 instance with all the tools your project requires. Once fully set up, create a custom AMI from this instance. Then, anytime you need to set up a new environment for your project — for example for a new developer or if you tried to install and experiment with a new library and it broke your environment configuration — simply launch a new EC2 instance using the custom AMI and attach a Cloud9 environment to it.

Cloud9 eliminate dependencies on local configurations and gives you the freedom to switch between devices, operating system etc. and always have the exact same editing experience and environment with all the required dependencies.

Ensure all developers have the same development environment.

Differences in local environments such as operating system, installed libraries, environment variables, etc. can quickly lead to an epidemic of “well…it works on my machine” syndrome to spread.

Using AWS Cloud9 can help ensure that all developers on your team use the same development environment. Regardless of the developers’ local environment, they can all use a Cloud9 environment with the same AMI standardizing their development environments to the same operating system, packages, tools, and libraries.

You don’t need a powerful computer to develop software

With AWS Cloud9, all you need to start developing software is an internet connection and a web browser. Whether you are using a high-end, fully specced MacBook Pro, a budget PC, or an old ThinkPad running Linux, you can run all the tools you need to code, build, test, and deploy your project. Your development machine has as much processing power as the EC2 instance you choose to use. Heck, I was even able to connect a Bluetooth keyboard to my iPad and start writing and compiling code as if it was my standard development laptop.

Limitations

Although AWS Cloud9 is a great tool, like all tools, it’s not perfect. Here are a few of the limitations I came across.

  1. Like other cloud services, internet connection is required! Obviously, you need an internet connection to use AWS Cloud9 at all, but it’s pretty uncommon that you don’t have a stable enough connection nowadays. Most of my experience has been pretty smooth, but I have had a few times where there was some latency while typing out terminal commands. I haven’t experienced anything that made it impossible to work, but your performance demands may be different than mine.
  2. Currently, it lacks support of plugins in other IDEs and code editors. You are at the mercy of the features AWS Cloud9 provides.
  3. The built-in debugger only works for a small subset of the languages supported by the IDE. Currently, the debugger only works for C++, Go, NodeJS, Python, and PHP.
  4. When creating a Cloud9 environment, you have the option of letting AWS create and manage your EC2 instance, or creating your own EC2 instance and attaching Cloud9 to it. If you let AWS manage your EC2 instance, AWS will shut off your EC2 instance when it inactive for an extended period of time and start it up again when you need — a great cost saving feature. Unfortunately, if you need to create your own EC2 instance (for example if you want to use a custom AMI), this feature is not available to you.

Conclusion

The attractiveness of AWS Cloud9 is in its convenience factor. It isn’t specialized for any particular language. It won’t serve your Java development better than IntelliJ or Eclipse, or offer the same customization features as Visual Studio Code. What it will do, however, is streamline software development in a group of diversified developers and give you an avenue of productivity on machines that may otherwise not provide it due to local hardware limitations.

Although I was skeptical of using a cloud based IDE at first, developing with AWS Cloud9 has been an enjoyable experience, and I definitely recommend any developer who hasn’t tried it yet to do so. Pick up a free t2.micro instance and try out some of the features; write a Hello World app in your favorite language; use the terminal. I don’t think you’ll regret giving it a shot!

--

--