I set off intending to experiment with Team Foundation Server recently to potentially replace our Subversion deployment. As I built up my virtual machine for the TFS application tier I went to install the data tier on our beefy 64-bit SQL Server machine and was stopped by a problem:
SQL Server 2005 Reporting Services service is installed on the data-tier computer. The service should instead be on the application-tier computer. Uninstall SQL Server 2005 Reporting Services from the data-tier computer and run setup again.
Upon further investigation I found out that TFS seems to want to be isolated in it's data tier. Sure we could everything onto a single box but I've got a perfectly good SQL Server which has three instances of SQL Server to support both production and development needs for the office. Why would I want to install yet another copy of SQL Server which I need to manage, monitor, and patch? I am amazed to see a mentality of application development that “applications require their own dedicated server“. Sometimes I wonder if the folks in Redmond realize that not all of us have billions of dollars in the bank to buy servers? I want to maximize the investment in my hardware which means stacking several applications onto a single server. Wasn't that the message the Windows Server 2003 marketing folks wanted to convey -- “Do more with less“? Applications should only need a dedicated server when their resource usage profile causes resource contention - not because a developer decided to assume that the server would contain nothing else.
Reviewing the TFS installation guide again I noticed a related comment which made me chuckle:
Team Foundation Server cannot be installed on a domain controller and does not support installing other servers such as Exchange Server or Host Integration Server on the same computer.
I would really be interested in knowing why they wrote this. What's so bad about a machine running as a domain controller or Exchange Server? They don't mutate the system into a horribly unusable state last I checked.