I'd like to ask for server infrastructure advice. We'll be upgrading our network infrastructure (built on MS ecosystem) and so far we have two servers (not counting ISA server): one machine serves application services like Exchange, IIS, SQL, etc., the other machine serves network services (domain controller, network services like DNS, DHCP, cert, it's also a file server. Both servers are on local subnet 192.168.x.x.
Application server was partly accessible from the outside through server publishing rules via ISA server for specific services (e.g., Exchange server). This setup is for small to middle size organization, so performance isn't an issue.
Now we'll be upgrading old hardware and it might be good to review our current server infrastructure. What we need is:
- domain controller
- network services (DNS, DHCP, ...)
- Exchange server
- SQL server
- IIS
- TFS
- file server
- update services
- certification authority
- something more, but mostly insignificant -
Would you recommend to keep current two-server infrastructure (one machine for application server on local network with some published services) and one machine as DC, network & files server, or everything in one server (but Exchange and DC on one machine isn't good so far I know), or something entirely different, or to keep application server in DMZ, etc. Btw, do you see any problem with having DC and file server in one machine?
Added after comments and Nextraztus's and Golmaal's answers:
Regarding virtualization, I'm definitely for Hyper-V - I'm fully MS person, I'm developing for Windows since WfW 3.1 and last decade I work with ASP.NET and Windows kernel IFS (yes, two quite but nice different worlds, C# and pure C).
Our standard setup is RAID 10 for system and critical data, RAID 5 for 'normal' data.
I'm almost afraid to admit that aloud, but I have some personal issues with virtualization - and I would appreciate if you can help me overcome this :) I use it day and night for the development, especially kernel developmnet with checkced builds of Windows, I use it with our work on Azure (we use nearly all services that Azure offers, VMs, Web Sites, Web Roles, caches and many more), but here in house, I "feel" that I'd still like to have real physical servers.
So far I understand, virtualization gives me more freedom, since I can have nearly as much servers as I want and can separate concerns as a need arises, I can back up entire images.
Without virtualization, I can specify that system runs on SSD, these data run on RAID 10, these data on RAID 5 (and if I need, I can add specifically new disks to thes data volume), etc. I know it becomes a different question, and it really seems you're all right, but what's real benefit of have everything virtualized, besides much lower costs?
EDIT 2:
I can understand that DC should be kept alone (but it's ok with network services, especially DNS and DHCP) - but why it seems better to expose almost each server role to separate server? Exchange to one server, SQL Server to another server, TFS to another server - the only reason I can think of is load balancing, but if it's not an issue ... ? On the contrary, I can see that e.g. TFS can benefit from running on the machine with SQL Server, IIS and Exchange.