I am an experienced programmer with very little hardware experience, and completely overwhelmed with the unlimited number of choices available. Since technology changes so rapidly, it's very difficult to Google up a guide that is both timely and relevant for what I'd like to do.
The best blog I've seen so far is this one, but it's already a few years old now.
I currently have several KVM/VirtualBox VMs on my Debian laptop. It is extremely slow, and I can't run more than 1 VM at a time (or 2 with the second having a very small memory/processor footprint).
I'd like to replace my laptop with a tower-based server for running these VM images, so I can remote in from any device on my LAN. My line of thinking is that I can get a lot more power into a larger enclosure for less money than an equivalent laptop would cost, with the possibility of upgrading down the line.
Here's the basic idea of what I'd like:
- Spend less than or equal to $1,500 US, tax included
- Install a hypervisor as the "main" OS (suggestions welcome as to which; was thinking of vSphere or KVM)
- Be able to run at least 2-3 Windows/Linux VMs simultaneously for development and testing
- Upgrade-able processor/memory would be nice, if possible
- Good performance for compiling large applications (noting that parallel computing is used in GCC/msbuild compilation) - developing both Web and desktop software
- Lots of RAM, which is used by compilation processes and VMs
So it should be kind of like a "home lab", but mainly used for professional development work.
I found some pre-built Lenovo servers on Amazon, and almost bought one, but I am second guessing myself in terms of what exactly to get.
Where to start? Build or buy? How to get started picking the right components (e.g. motherboard, drive, processor)? I know my way around the inside of a computer... I can replace parts, etc., so building a server is not out of the question-- but unfortunately I don't know how to pick "the best" parts. My last few laptop picks have been flops.
EDIT:
Here's an example of a sample workload that I might want to have. As a personal interest, I might want to compile AOSP (android) in a Linux image. That eats up a lot of RAM and a lot of CPU. While that's happening, I'm working on professional windows development in a 2nd VM w/Visual Studio. It's not graphic intensive, but I'd be compiling regularly, which, employs parallelism. There would also a web server running in a third VM that would be serving REST requests for testing purposes, related to the development work.
EDIT 2:
I'm overwhemed with the massive amount of choice when it comes to hardware. I'd like some advice from experts on (a) whether it's better to build or buy pre-built, and (b) how to get started picking something that is a good quality build, and upgradeable in terms of RAM (and possibly CPU). What are good sources for getting this type of information? There is so much information out there, it's hard to tell what's reliable and what's misleading. I don't care if it's a pre-built server, or if it's DIY, so long as it is good quality.