Welcome to MSDN Blogs Sign in | Join | Help

Team Foundation Server 2010 Key Concepts

Before I start enumerating the features of TFS 2010, I need to start with some of the big conceptual changes that we’ve made.  This post set some architectural groundwork and define some terms that I’ll use in subsequent posts.

Team Project Collections

The first important concept to understand is what we call Team Project Collections (TPCs).  In TFS 2008 a TFS server contains a set of Team Projects.  Those Team Projects are mostly but not 100% independent of each other.  For instance one project can be a branch of another project.  Also work item types in 2 projects share the same underlying database schema, making it very easy to run work item tracking queries across projects on the server.  All checkins on a server share the same monotonically increasing changeset number and all work item ids are allocated from the same monotonically increasing work item ID, etc.  Because of the subtle dependencies, certain things people want to do are difficult (or nearly impossible) – for example, consolidate two Team Foundation Servers into one or back up and restore an individual project.

In TFS 2010 we wanted to solve a long list of scenarios like those and our solution is called Team Project Collections (TPCs).  In TFS 2010 a TFS farm (notice I said farm, not server – more on that in a minute) hosts Team Project Collections and not just Team Projects.  A Team Project Collection is a group of related Team Projects and a TFS farm can host many Team Project Collections.  To try to make an analogy with TFS 2008, it’s as if TFS 2008 could host exactly 1 Team Project Collection per physical TFS server.  Just about any statement you might make about a TFS 2008 server would apply to a TFS 2010 Team Project Collection (TPC).  For instance, everything I said above about changeset numbers, work item IDs, etc is true of a TFS 2010 Team Project Collection.  The key, however, is that Team Project Collections are completely independent of each other.  Two Team Project Collections can each have a change set with the same changeset number (but very different contents).  They can each have work items with the same work item ID.  You used to identify things in TFS by server url + ID.  Now you identify them by server url + team project collection + ID.

Let me try to make this concrete with a screen shot.  When you connect to a TFS server in TFS 2008, you get a screen that looks like this.  As you can see – you pick the server and then one or more Team Projects to work on.

image

However, in TFS 2010, the Connect to TFS dialog looks like this:

image

As you can see on the left hand side, there is now a list of Team Project Collections (currently labeled “Directory”) and on the right hand side, you can see a familiar looking list of Team Projects within the selected Collection.  The client will only allow you to connect to projects in one TPC at a time.

If all of this sounds vaguely similar to the notions around Sharepoint Site Collections and Sharepoint Sites, that’s because it is.  The concepts, benefits and limitations are all quite similar.  If you are familiar with the Sharepoint architecture, it will help you understand the TFS 2010 architecture.

Database Changes

The introduction of Team Project Collections has brought with it changes to the organization of the TFS databases.  TFS 2008 was composed to 5-7 databases partitioned by subsystem.  There was one for Version Control, one for Work Item Tracking, Work Item Tracking attachments, Project Management, Build, Integration, …  With the introduction of Team Project Collections, we wanted to consolidate the various subsystem data to make Team Project Collections easier to manage.  As a result, the TFS 2010 database architecture is as follows:

TFS_Config – The “root” database that contains centralized TFS configuration data, including the list of all Team Project Collections that this TFS farm is responsible for.  If you look at Beta 1 (to be released in the not too distant future), you will see this is currently called TFS_Application but we are changing the name to TFS_Configuration after Beta 1 to make it more consistent with Sharepoint terminology (WSS_Config).

TFS_Warehouse – The TFS 2010 data warehouse database that contains reporting data from all Team Project Collections served by this Farm.  This means that the data warehouse provides reporting capabilities across all Team Project Collections in the farm.

TFS_* – One database for each Team Project Collection managed by the TFS farm.  For example the “default” one would be TFS_DefaultCollection.  Each database contains all of the operational data regardless of sub system (version control, work item tracking, build, etc) for a given Team Project Collection.

Of course, there are still databases for Sharepoint and Report Server where ever you install those components.

I share this information not because I particularly want people mucking around in the databases but rather because I think it helps people understand the changes and large scale TFS administrators will want to be able to understand the SQL characteristics for operations.

TFS Farms

The introduction of the notion of a TFS farm is another big architectural change in TFS 2010.  In TFS 2008, we talked about TFS “Servers”.  Even then it was a bit of a misnomer since you can install all TFS 2008 capabilities (TFS, SQL, Sharepoint, Reporting Services, …) on a single physical (or virtual) server or distribute them across multiple.

However, it gets even more flexible with TFS 2010 and as such, it’s now really awkward to talk about a TFS “server”.  That said, it is still possible (and will likely be common) to install all of the TFS components on a single server.

The big changes that constitute “TFS farms” are the following:

NLB support for TFS application tiers – With TFS 2010, you can configure multiple TFS application tier machines to serve the same set of Team Project Collections.  The primary purpose of NLB support is to enable a cleaner and more complete high availability story than in TFS 2008.  Any application tier in the farm can fail and the farm will automatically continue to work with hardly any indication to end users of a problem.  It also improves things like the operating system patching story (ATs in the farm can individually be taken offline for patching with out shutting users out of the system).  And more.

Scale out for SQL data tiers – TFS 2010 now support use of as many SQL Servers as you like.  Each data base can be configured to be on any SQL server and because each TPC is an independent database, this gives administrators a great deal of flexibility to manage their SQL server installations.  These features can be used to load balance databases across SQL Servers, manage capacity, retire old SQL servers, etc.  A project collection can easily be suspended while it is moved between SQL servers without affecting the operation of any other collections.

Summary

Just to reiterate – you don’t have to do any of this.  You can still run TFS on a single server and not have to think about multiple ATs or multiple SQL servers.  You can stick with one Team Project Collection if you like.

I believe that these new capabilities will significantly change the way enterprises manage their TFS installations in the future.  With Team Project Collections and TFS farms, you can create a single, arbitrarily large TFS installation.  You can grow it incrementally by adding ATs and SQL Servers as needed.  You can evolve it as you need to reconfigure hardware.  It provides straight forward high availability.  TPCs provide a complete delegation model, allowing you to provide services to different groups without them knowing about each other.  TFS 2008 servers will be able to be consolidated as independent Project Collections on TFS 2010 farms.

My intent with this post was to cover the key architectural changes and concepts and not cover the specific features/benefits (but I had to touch on some of them to make it make sense).  Subsequent posts will cover this from more of a feature perspective but hopefully you now have the concepts that will help it all make sense.

Thanks,

Brian

Published Sunday, April 19, 2009 2:26 PM by bharry

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Team Foundation Server 2010 Key Concepts | ASP NET Hosting

# re: Team Foundation Server 2010 Key Concepts

Wow, that sound like a big improvement. Will it be possible to move a project from one collection to another? I am thinking on the upgrade scenario: TFS2008 has no collections and with the upgrade I can imagine that 1 server becomes 1 collection. However, I would like to make use of those collections. Would that be supported?

Regards,

Thys

Sunday, April 19, 2009 3:48 PM by Thys

# Team Foundation Server 2010 Key Concepts

Team Foundation Server 2010 Key Concepts bharry just post a great article about TFS 2010 key concepts

Monday, April 20, 2009 3:59 AM by Shai Raiten

# VSTS Links - 04/20/2009

The Accentient Blog on Microsoft (Team System) makes it to the upper-right (leaders) quadrant Brian Harry

Monday, April 20, 2009 7:17 AM by Team System News

# re: Team Foundation Server 2010 Key Concepts

do gripe about new version when your current and previous versions are crapy. Fix crap before make any new concepts.

Monday, April 20, 2009 8:11 AM by developer

# re: Team Foundation Server 2010 Key Concepts

Thys,

Your assumption about upgrade is exactly correct.  When you upgrade a TFS 2008 server to TFS 2010, you will end up with 1 Team Project Collection.  After the upgrade you will be able to break up that one collection into multiple smaller collections.  However, you can never merge collections back together so I encourage people to be conservative at first until they get some experience with when they want one and when they want multiple.

Brian

Monday, April 20, 2009 9:03 AM by bharry

# Interesting Finds: April 20, 2009

Interesting Finds: April 20, 2009

Monday, April 20, 2009 9:50 AM by Jason Haley

# This Week on C9: New Downloads, Design for Devs, TFS 2010, and underground Script Clubs

This week on Channel 9, Dan and Brian discuss the week's developer news, including: - Silverlight

Friday, April 24, 2009 8:46 PM by ComponentGear.com Feed

# re: Team Foundation Server 2010 Key Concepts

"or back up and restore an individual project"

This would mean 1 team project = 1 TPC. Is this a recommended scenario to be able to do project based backup/restore? (e.g. 50 team projects = 50 TPC's on a server, just to be able to do project based backup/restore).

Thursday, April 30, 2009 9:08 AM by Daniel

# TFS 2010 Admin, Operations & Setup Improvements

Since I started with the key architectural concepts, I think the most appropriate place (though perhaps

Thursday, April 30, 2009 12:21 PM by bharry's WebLog

# re: Team Foundation Server 2010 Key Concepts

Daniel, yes, we will be recommending that people use TPCs for any boundary they want independent back up and restore.  For some people this will equate to 1 TP = 1TPC.  However, for many people, I expect they will have sets of very closely related projects that can live in the same TPC.  In the next month or so, I'll try to write a post on the rules around TPCs - what they can and can't do and why you may or may not choose to create a separate one.

Brian

Friday, May 01, 2009 7:51 AM by bharry

# re: Team Foundation Server 2010 Key Concepts

Is it too much to hope that there will be native 64-bit support or at a minimum WoW support in this release?

Friday, May 01, 2009 11:55 AM by Matthew Erwin

# re: Team Foundation Server 2010 Key Concepts

Ask and you shall receive :)  Read the pre-reqs section of this post: http://blogs.msdn.com/bharry/archive/2009/04/30/tfs-2010-admin-operations-setup-improvements.aspx

Brian

Friday, May 01, 2009 12:20 PM by bharry

# re: Team Foundation Server 2010 Key Concepts

I was using VSTS last year in one of the project in testing project. It was good but was not really helpful for testing purpose. Do we have some new concept for testing execution which can help out tester.

Monday, May 11, 2009 9:16 AM by Shekhar

# re: Team Foundation Server 2010 Key Concepts

Yes, in 2010, we have a TON of new testing stuff coming.  Check out http://blogs.msdn.com/amit_chatterjee

Brian

Monday, May 11, 2009 9:26 AM by bharry

# The Upgrade Experience - Team Foundation Server 2010

This is the first of a series of posts around the topic of Upgrading to Team Foundation server 2010 from

Monday, May 11, 2009 1:39 PM by Bryan Krieger

# re: Team Foundation Server 2010 Key Concepts

What changes will be made around the checkin policy architecture? At what level will we be able to enable policies (TPC, Project, Branch, etc)?

And is there any improvement in the policy distribution mechanism (will we still have to distribute and set registry on each client ourselves)?

Wednesday, May 13, 2009 9:53 AM by M

# Team Foundation Server 2010 - Relational Warehouse and Cube Schema Changes

Team Foundation Server 2010 is a BIG release for us by all counts. We have made conceptual changes; Brian

Saturday, May 16, 2009 6:50 PM by Sunder Raman's Blog

# Team Foundation Server 2010 - Relational Warehouse and Cube Schema Changes

Team Foundation Server 2010 is a BIG release for us by all counts. We have made conceptual changes; Brian

Saturday, May 16, 2009 7:17 PM by Teams WIT Tools

# Team Foundation Server 2010 и собственные отчеты

В ближайшее время ожидается выпуск первой беты Visual Studio 2010 и TFS 2010, которые можно будет попробовать

Sunday, May 17, 2009 1:57 PM by Константин Косинский

# re: Team Foundation Server 2010 Key Concepts

M, Not any significant ones in the checkin policy infrastructure itself in this release.  There will still be power tools that address some of the gaps you identify - like path based scoping of checkin policies.  The latest release of the Power Tools also supports distribution of checkin policied to clients.

One big difference in this release is the introduction of Gated Checkin where you can do much of your validation on the build machine and side step some of these issues.

Brian

Monday, May 18, 2009 1:45 PM by bharry

# Team Foundation Server 2010 - Where Are My Reports?

If you’ve upgraded your Team Foundation Server to Team Foundation Server 2010 Beta1 you’re probably wondering

Wednesday, May 20, 2009 12:20 PM by A Blog by Aaron Bjork

# re: Team Foundation Server 2010 Key Concepts

Can the TPC be used for implementing resource quota so that no one collection can hog the resources?

Tuesday, May 26, 2009 8:44 AM by Subodh Sohoni

# re: Team Foundation Server 2010 Key Concepts

Subodh,

Somewhat yes.  Because a TPC is a separate SQL database, you can use all of SQL's quota mechanisms to throttle it.  We don't really have any mechanism for throttling the application tier.  Fortunately, the data tier is usually the bottleneck so if you throttle that, you should be in pretty good shape.

Brian

Tuesday, May 26, 2009 8:53 AM by bharry

# SharePoint Integration in TFS 2010 Beta1

  Last month, Brian Harry outlined some of the new features in the setup and administration experience

Monday, June 01, 2009 1:21 PM by Teams WIT Tools

# Forward Compat GDRs for Team Foundation Server 2010!

TFS will be providing a General Distribution Release (GDR) to enable older versions of Visual Studio

Monday, June 01, 2009 4:11 PM by Teams WIT Tools

# 5 Quick Steps to Get Introduced with Visual Studio Team System and Team Foundation Server 2010 (Beta 1)

Last month (May 2009) Microsoft has released its first beta for Visual Studio Team System 2010 and Team

Wednesday, June 03, 2009 10:13 AM by .NETTER Characters...

# 5 Quick Steps to Get Introduced with Visual Studio Team System and Team Foundation Server 2010 (Beta 1)

Last month (May 2009) Microsoft has released its first beta for Visual Studio Team System 2010 and Team

Wednesday, June 03, 2009 10:13 AM by .NETTER Characters...

# re: Team Foundation Server 2010 Key Concepts

great, i think, perhaps.

But.. when I sync and see the log of what's changed, can i right-click on a filename and view history? or do i still have to find it in the solution file :(

can I revert a change on a file from the ui yet?

can I drag a file from the solution into the source control window to locate it?

can I see a list of files that are not on the server, and remove them all?

can I check any files for physical differences, rather than pending files, which just shows what VS is aware of?

can I have multiple changesets to keep areas i'm working on separate?

can I associate a work item by ID without having to select a query that I know contains it? or select the query all, and wait a minute for it to come up?

does the ui still flicker as i scroll down pending changes, making it difficult to see which items are checked?

when things go wrong, can I get to a clean point with a click, rather than moving the tree and force syncing all?

Wednesday, June 10, 2009 7:05 PM by twitter and bisted

# re: Team Foundation Server 2010 Key Concepts

But.. when I sync and see the log of what's changed, can i right-click on a filename and view history? or do i still have to find it in the solution file :(

>> No you have to find it either in the solution or in source control explorer.  It seems like a pretty cool idea though.  I'll add it to our suggestion list.

can I revert a change on a file from the ui yet?

>> I'm not sure what you mean be "revert".  Do you mean undo pending change or rollback?

can I drag a file from the solution into the source control window to locate it?

>> No, why do you want to do this?  You can do most everything from the solution explorer.

can I see a list of files that are not on the server, and remove them all?

>> Yes, use folder compare.

can I check any files for physical differences, rather than pending files, which just shows what VS is aware of?

>> This is just an issue from the command line, right?  I've hated this behavior myself but forgot about it.  I just asked that we fix it.

can I have multiple changesets to keep areas i'm working on separate?

>> Only by having more than 1 workspace or by using shelvesets.

can I associate a work item by ID without having to select a query that I know contains it? or select the query all, and wait a minute for it to come up?

>> I'm afraid not.  I thought we had made Ctrl+G work for that but I just checked and it doesn't.  I'll see what we can do.

does the ui still flicker as i scroll down pending changes, making it difficult to see which items are checked?

>> Could you be more specific?  We've done some work to improve scrolling responsiveness but I can't say for sure without understanding more about what you are doing and seeing.

when things go wrong, can I get to a clean point with a click, rather than moving the tree and force syncing all?

>> You should be able to leave the tree in place and right click on the root in the source control explorer and do a force get to get things back in sync.  Folder diff can also be your friend here.

Brian

Monday, June 15, 2009 3:26 PM by bharry

# re: Team Foundation Server 2010 Key Concepts

Hey,

 To add to the list of questions/suggestions:

1. When branching the history of an item (file, folder etc.) in the new branch is being reset so that previous actions performed prior to the branching is emitted and are not shown.

 Consider a developer trying to see the complete history of a file... nearly imposibile.

2. Would history pane refresh itself whenever a file is selected? In 2008 you had to select the file and right-click on it asking for HISTORY. That's even though the history pane is displayed showing the last file which a right-click-History was performed on.

3. When adding remarks on the check-in, a simple spell checker will be appreciated.

Wednesday, August 26, 2009 6:34 PM by Tal Tikotzki

# re: Team Foundation Server 2010 Key Concepts

At my company, we audit our applications annually, to make sure we are following our development procedures correctly.

One of the audits we do requires us to compare dates of source files to the date of the associated executable file.  I currently do this by extracting my source files from VSS and comparing the last modified date on them to the date the executable file was created.  This doesn't work in TFS2008, because it doesn't track this information.  Audits are a big enough pain, now the source control tool I want to use appears to have been designed to make the job harder.

I had seen an entry somewhere that this was on the list of things to be addressed in TFS2010.  Did it make the cut?

I work for a pretty big company (in the top 100 of the Fortune 500), and this problem will likely limit our use of TFS.  I would love to see this addressed somehow.

Tuesday, October 20, 2009 9:03 AM by jcdecker

# re: Team Foundation Server 2010 Key Concepts

It isn't in 2010 but it's high on our list to add.  Have you considered comparing the contents or a hash of the contents instead?  TFS keeps an MD5 hash of every file contents.  You may be able to use this to do quick compares.

Brian

Monday, October 26, 2009 8:28 AM by bharry

# re: Team Foundation Server 2010 Key Concepts

I hope there is a plan to simplify reverting a file to a previous version.  This is needlessly and senselessly complex.

When viewing a file's history, I should be able to simply right-click and select "Revert".  That should check out the file for edit, get that specific version locally, and allow me to simply do a check-in to revert the file to its previous state.  

I cannot fathom why such a fundamental feature wasn't present in version 1.0, let alone still not present in TFS2008.

A changeset should be similarly easy to revert all at once, atomically.

No "power tools" or jumping through unintuitive hoops should be required.

Tuesday, November 03, 2009 12:45 PM by pmbAustin

# re: Team Foundation Server 2010 Key Concepts

In some ways yes and in some ways, I'm afraid not.  Yes, we built rollback into the TFS 2010 product.  It is faster, lacks some of the side effects of the Power Tools version and handles merge history correctly.

The unfortunate thing is that, for now, it is command line only.  I agree with you that it should be an option in the history window but we did not get the opportunity to do that in this release.  We will add it there as soon as we can.

Brian

Tuesday, November 03, 2009 10:43 PM by bharry

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker