Amazon EC2 as Developer Workstation

The hardware costs of keeping your developer workstations up to par can get pretty high, especially if you need to take them with you. A high-end laptop, configured and loaded with the appropriate development environments, is a terrible thing to lose to a spill in the parking lot.

Looking down the barrel of a hardware upgrade to keep up with the latest tools, we’re trying out an experiment. Can an EC2 instance over RDP deliver everything we need in a development environment? You have to admit, it sounds promising – a $300 Chromebook + an hourly fee with hardware upgrades included forever.

Windows 2012 Instance Running

Windows 2012 Instance Running

So, what do some of the numbers look like? A Windows 2012 Instance with 15 GB of RAM goes for $0.702/hour.

  • $0.702/hour * (8 hours/day * 5 days/week * 46 weeks/year)/12 months = $107.64/month.
  • Bandwidth at ~100 kbps = $0.94/month
  • EBS Persistent Disk 100 GB = $10/month
  • An Elastic IP (billed for hours not connected to a running instance) ~ $2.89/month

So, what we’ve got is effectively a solid Windows development environment for $121.46/month, accessible on cheap, barebones hardware. What does the setup look like at the beginning of each work session?

First, we need to spin up our instance. This can be automated using the API, but here’s how you could do it manually:

  • Create a Security Group, and allow RDP traffic from your current public IP only (you only have to create it once, then update it with your IP each time you connect from a different location).
  • Add the instance to that Security Group
  • Right click on the instance, and click Start

The instance is typically ready to connect in about 20 seconds. We’ve set up a saved RDP connection so we don’t have to type everything in each time. This is where the $3 for an Elastic IP is well worth it – you can use the same settings stored in an rdp file each time you connect. You can even set up a DNS pointer to it. Now, RDP is a lot better than it once was and can use multiple monitors, connect to local storage, and more, all with simple configuration. 

Not sure if this is a long term solution, but it’s looking pretty reasonable. Compilation is almost ludicrously fast on this instance, as is Internet bandwidth:

Internet Speeds from the Instance

Internet Speeds from the Instance

Let the great experiment continue!