Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm planning a development environment on the cloud. My target platform is Microsoft .Net and preferred cloud id Amazon AWS (although I'm open for suggestions).

I'm planning to purchase a High-Memory On-Demand Instance and deploy one guest VM per developer within it. Here are my queries:

  • Is this topology advisable?
  • How would a developer directly login and work with the guest VMs?
  • Besides having a good broadband Internet connection (and also a backup connection), what other care need to be taken at developer end?
  • How will I be able to manage resources on my development environment? Any tools? Services?

Thanks.

share|improve this question

3 Answers 3

No, that's not advisable. For one, running virtualization on top of virtualization is going to perform poorly. And most developers don't like to work against a remotely hosted virtual machine, where every little operation has a bit of delay (due to ~50 - ~200 ms network latency).

The most common solution is something along these lines:

  • Every developer works directly on his own local PC, and has a suite of dependencies installed as needed (Visual Studio, .NET, IIS Express, SQL Express, etc).
  • Code is pushed to a central repository (Subversion, whatever).
  • A Continuous Integration (CI) server (fx Hudson, TeamCity) checks out code from the repository, builds it, runs unit tests, and possibly installs it directly onto a Test or Staging server.

Your CI server, Test and Staging servers could happily live in the cloud (easier with something like Virtual Private Cloud). So could your code repository, but if you don't prefer it on-premises, then you should just outsource it to a hosted Subversion / Git service.

Edit: You could test it (that's one of the benefits of cloud computing -- you can spool up a server in a matter of minutes, and test how it actually performs for you). But how about running a Windows 2008 R2 server in-house, and setting up VMs on that server instead? Near-zero network latency, and not hard to do at all.

Before we go any further -- why don't you ask your developers how they're used to doing things, and what they prefer...

share|improve this answer
    
Sorry ;) Remote development works fine IF the VM's are powerfull enough and run Windows 7. anything before is painfull. Been there, done that and DOING IT NOW. Great. Support for multiple screens, good graphics etc. –  TomTom Sep 17 '10 at 13:39
    
@TomTom: I agree. I know of a shop that uses a on-premises server with Windows 2008 R2 HyperV to create a bunch of development VMs, and this works great. But OP was asking about AWS, so HyperV-virtualization-on-top-of-Xen-virtualization, and all on a WAN link. I don't think that's advisable. Could "work", yes, but likely to be quite frustrating. –  Jesper Mortensen Sep 17 '10 at 17:04
    
No, sorry- I talk of off premises, too. I have my dev woorkstation now in an image sitting in our data center on one of my hyper-v servers. I mostly connect through DSL links of some sort (speed 6 - 12 mbit) and it works like a charm ;) The reason I do that is that it is more flexible. I also have people doing trading (that is financial trading) off workstations on the same image - this is HEAVY on graphics, multiple full screen charts. They run on virtual servers off the same server(s) remotely and it works nicely. –  TomTom Sep 17 '10 at 18:01

AWS instances are already virtual machines running on a hypervisor. It is not a good idea to then run another layer of virtualization so that you've got developers working in a VM inside a VM on hardware that's at the other end of a WAN connection. I am skeptical that it is even technically possible - but if it is I'm sure that performance is going to be awful.

share|improve this answer

All the VM technologies you would use in this setup require hardware virtulization at the CPU level. Since EC2 instances are already running on a hypervisor, you don't have platform access to the bare metal to achieve this.

If you REALLY want this, I would recommend a dedicated server somewhere and just VPN it into your world.

If you are looking for cloud benefits, you prob need to decide on an appropriate unit (one box per dev, one box per team, etc) and then choose an instance size appropriate to those needs. To get the benefit of the cloud setup here, you also need to be spinning instances up/down based on needs. The usage patterns of a dev team really don't themselves to this setup.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.