Development machine for multiple developers

0

Hi, I'm looking for a smart solution for offering my developers a shared environment and at the same time optimizing costs. Let me explain what we do today. I have 10 developers each of them with a personal EC2 instance. They use Ubuntu and then NICE DCV to remotely connect to the desktop and work from there. Usually, they use the EC2 for developing our internal application (coding Java, Terraform, Python, HTML, lambda, go), experimenting, and spinning up containers and when done they push the code to our centralized Git repository (Gitlab).

Now, in this scenario, I have too many EC2 instances (we try to shut them down overnight and turn them on in the morning but quite often we incur into lack of on-demand resources and we have to wait).

WHAT I WOULD LIKE TO ACHIEVE? Ideally, I believe I could still make use of EC2 instances but by sharing one or more with multiple users, I don't see the need of having a personal EC2 instance. I could still leverage NICE DCV configured for multiple sessions, and my developers will share the same EC2 instance. I could then turn off/on the EC2 instances when not used and benefit from on-demand capacity reservation for example to be sure (I'm not really convinced reserved instances is the right approach for my case).

Do you have a smart idea for a better setup for the scenario described above? Thank you ;)

  • Indeed NICE DCV offers the very efficient sharing of a Linux instance with multiple users with e.g. 8-10 or more full-performance virtual DCV desktops depending on the resource usage. This works with GPU-sharing or without. It seems reserved instances is the right way to go in case of not getting hold of instances when needed - or you keep it running and add sessions when needed. What instance type are you looking at?

profile picture
asked a year ago632 views
1 Answer
0

Hi @Escape82,

I have some thoughts to contribute to your design.

First, for completeness, know that AWS Workspaces provides for managed cloud workstations (including Linux). Although I do find it valuable at large scale, I am not sure it is necessary for your target of ~10 users nor am I sure it will be less expensive than an EC2 based solution.

Yes, you could share EC2 instances among developers. I think this reduces flexibility due to interference between developers whereas they would have otherwise been unimpeded by coordination with others (burst load conflict, reboots, system level packages installed). But if you do not need to increase the size of the instances then running fewer of them will be less expensive. In all cases but especially here you will probably need non-local user accounts - for example user auth from Active Directory or similar.

You may also be able to reduce your cost even with per-developer EC2 instances by using the AWS Instance Scheduler, which automates stopping/starting of EC2 instances. This prevents "forgetting" to stop the instance overnight, and you can schedule it to pre-start shortly before it is needed (avoiding waiting for an instance to start). Maybe this small tweak is all you need to reduce your costs acceptably.

You can also reduce costs by using Savings Plans. This is an alternative to instance reservations that is much more flexible. Consider looking at the Savings Plans recommendations in your AWS Cost Explorer to see if they are a fit for your usage patterns.

Lastly, I have deployed Cendio ThinLinc with success. This is not an AWS offering - Cendio is a third-party. But I used this with a previous employer to create a group of Linux EC2 instances for them to remote into for work. It has multiple users per Linux instance, and load balances among them. The users do not have to pick a machine, they will get back into their same machine or another if their session ended, that machine recycled, or for load reasons. So users always connect to the same endpoint and it "just works" for them even though there are multiple shared Linux instances on the back-end. However note setting this all up is non-trivial, so it is an investment best for long-term use and at scale. I am not sure if it would be worthwhile for your case.

Hope this helps.

Regards,

Ryan

profile pictureAWS
Ryan_M
answered a year ago
  • Thank you Ryan for your detailed answer. Actually, what would you recommend for solving the problem of the lack of ondemand resources? This is a problem when I need to start up 10 EC2 instance in the morning and in my region or AZ there not enough AWS resources for spinning up a the EC2 instance I need. Saving plan, based on my understanding, would not solve this case, unless I go for reserved instances (or I don’t switch off the EC2).

    Thank you

  • Correct, Savings Plans do not reserve capacity whereas an instance reservation would. If you otherwise would have only run these instances for 25% of a week (ex: 40 hours) then the instance reservation(s) would not be saving you money.

    I believe the instance type will have a significant effect on on-demand capacity availability. Using a common instance type and modern generation (ex: M6g) may help. What instance type and region are you using? You might consider an AWS Support request for what instance types are plentiful in your region, in case they are able to share that information.

    You could also automate saving an instance to an AMI and terminating it rather than just stopping it, and then be able to re-launch it as a different but compatible instance type. So if your first instance type choice has a capacity conflict you could retry with another instance type or a different AZ. Or if there are multiple acceptable regions for you, try re-launching in another region.

    Hopefully finding and using a more plentiful instance type is all you need to do, rather than purchase reservations or retry using different instance types/zones/regions.

    Regards, Ryan

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions