I am a freelancer and plan to work with other freelancers in the coming time. Since I would be owning the project(s), I want to own the development environment as well. We all will be working out of our respective locations. I have been contemplating using Amazon's EC2 service for the purpose of erecting a development environment and giving desired access to the others involved.
With the above in mind, I have several queries:
- Is this a good idea in the first place? Is it better to have VMs created and distributed (physically) to the members of the team? Of course I lose control in this case and data is vulnerable.
- Should I just buy a Large instance, install all desired tools, create users and provide them access as per role?
- Should I just buy a Large / Extra Large instance, build VMs inside the instance, one each for every role and instantiate instances per user? I am not sure right now how the access would work out. How one would be able to directly access a VM instance running inside the EC2 instance.
- There are tools that help in managing the EC2 instances w.r.t. the EC2 APIs. However, w.r.t. what I have explained above (specially point # 3), are there tools that can help in the management / monitoring of instances and VMs within?
There may be many more complexities that I cannot think of at this point. Will appreciate inputs / directions in case someone has been through this already.
Option 2 requires having an instance up and running 24/7 (or at least during the union of everyone's work schedule). This may not matter to you.
I'm not sure if option 3 is possible. Are you asking about installing Xen (or something) inside your EC2 instance and then creating your own "sub-virtual" machines?
Another option is to create an EC2 image (AMI) with the development environment set up, and then allow each developer to launch an instance of this AMI whenever they want to work.
Benefits:
Drawbacks:
If you think this is right for you, then the AWS account problem can be addressed in several ways:
I believe you can grant launch access to an AMI without necessarily giving the person
root
access once the instance is up and running. But you would want to double-check this, since it sounds like you are concerned about security.Finally, this would obviously require some central source code repository which is running 24/7. One more reason why this may not be the right solution for you.