How to install multiple Microsoft applications without conflicts

This answer is based on personal experience, from the 3 servers I have running on my home network.

Install either Server 2008R2 or Hyper-V Server onto machine B that supports virtualisation. Leave this as just having the Hyper-V role - run everything else under their own virtual or physical machines. Run it in Server Core mode if you are confident enough to.

Domain Controller - on it's own VM with nothing else - it doesn't need very much RAM at all to function well (512Mb is often enough for small instances), but it will cause issues with a lot of other things that you try and run alongside it. Run it in Server Core mode if you are confident enough to.

SQL Server - on it's own VM with nothing else and with fixed RAM or on its own onto machine A - it will eat up as much RAM as it can, so this is the most effective way to limit it.

Exchange Server - same as SQL Server.

SharePoint & TFS - on a VM together - they can co-exist well (as TFS uses SharePoint itself). If you install SharePoint first, TFS should be able to use the existing install.

Lync - heavily depends on what you'll be using it for, if it'll be handling calls then use machine A for this alone. If it's just instant messages or light usage, you can VM it.


The solution is Virtualization.

Not only because it is cheaper , but because maintaining it is easier than having multiple physical computers that needs management, having multiple virtual machines installing windows at the same time is much easier than having to go to individual computers to do it.

The free Vmware Player is pretty good, vbox gives better features, but I personally prefer vmware player for its performance. google for comparison of their latest versions.

For virtualization to work and allow for 64 bit OSes, the processor need to have VTx enabled, some processors do not have it, and some motherboards limit it (do not know why), so check the specification first.

Assign each VM 40~50gb of harddisk space, you can later increase if required.

I am not sure of ram usage, but I had a windows 7 x64 pc for SQL server + IIS + visual studio 2010, for small sized applications development, 4gb was more than enough, and rarely needed the page file.

Consider giving each VM enough ram to make the VMs not need to do allot of paging (page file), page file slows everything unnecessarily, this is specially important to consider since there will be multiple OSes using the same harddisk concurrently.


Hardware:

Do not pick already built computers, build your own, building your own has the benefit of being able to maintain everything yourself and have individual warranties, and if something goes bad, like a motherboard, you can put the harddisk on a different machine, or if the ram went bad, you can bring some ram from another machine.

Do not overspend on processors, quad cores are not going to make a huge difference in your scenario, dual cores should be fine.

Sometime processors with 20% performance increase costs 100% more, which isn't wise.

Make sure to pick something from the latest architecture (currently Sandy bridge , preferably Ivy bridge , or wait for Haswell), newer architecture always have better performance for the same clock rate, and better features.

You can never have too much ram, ram size is what matters, ram speed make very little difference in real world (speaking about DDR3)


Best practice:

In my opinion, this is something that you will have to learn while installing and running those applications, read about different installation options, and experience with them too, and then pick what YOU think is better.

I think some learning books will instruct you during such installations, I do remember reading about how to install in the beginning of an MS SQL book.