Deconstructing Visual Studio Team System
Visual Studio Team System (VSTS) is a great example of a solution implemented using the Microsoft platform. At the centre of VSTS is the Team Foundation Server (TFS). Through clever instrumentation business processes are measured, guided and enforced providing the business with reduced bureaucracy while obtaining the detailed level of oversight required in the modern marketplace. Extraordinarily high levels of integration and accessibility ensure everyday productivity tools and specialist developer tools can fully participate in application lifecycle management. While additional extensions, methodologies and new tools can easily be integrated into the solution as future projects or technology choices demand. It is also used by Microsoft product teams – usage stats below.
TFS takes advantage of several key Microsoft products and Windows Server features to deliver enterprise class project management and source control. Implemented in classic three-tier architecture, TFS uses SQL Server as the data tier with both an operational relational store and a data warehouse.
In the application tier, SQL Reporting Services and Windows SharePoint Services (WSS) provide significant functionality and infrastructure. By utilising WSS, TFS gets version-controlled document libraries for all those non-source code artefacts typically built and requiring management during a software development project. Using the WSS document libraries enables the broad project team to capture project vision, requirements, design, test plans, deployment procedures, and training plans, in a wide variety of productivity tools, as suits the purpose or standards of the organisation. The document libraries are easily accessible through the Team Project Portals automatically built, using WSS, by TFS at the setup of a new project.
Specific TFS functionality is implemented in and exposed via the TFS Web Services to complete the application tier. The TFS Web Services provide to the client tier an API to TFS functionality, such as Team Foundation Version Control (TFVC). TFVC provides enterprise class source code version control, being built from the ground up to address the challenges of large development projects. TFVC uses SQL Server as its robust, scalable and high-performance storage mechanism.
To illustrate the scale and reliability of TFS, Microsoft’s internal IT department has
published statistics on Microsoft’s own use of TFS. This data covers not just the internal deployment of TFS for Microsoft development projects but also Microsoft’s open source internet service Codeplex, which is built on top of TFS.
You don’t need to be using Microsoft development tools to take advantage of TFS. Microsoft’s eternal ‘wingman’ – the partner ecosystem – ensures other development tools, methodologies and technologies (such as Java development) can participate as first class citizens.
VSTS demonstrates so many great things. It delivers key functionality by reusing key Microsoft platform technologies, ensuring that users can use familiar productivity tools for ALM; but also, the IT Professionals who have to manage the infrastructure, get to manage familiar things. With consistent skills and reduced training costs all round, VSTS shows us how application solutions should be built.
Paul Foster
Microsoft
Blog:
http://wotudo.net/
Question of the month:
Which platform(s) do you develop for?
There are many platforms including Windows, Unix, Linux and Mac OS X. Which do you build applications for?
1. I develop just for Windows
2. Primarily Windows but also for other platforms
3. Some Windows but mainly other platforms
4. I am moving away from Windows
5. I don’t develop for Windows
To take part in this week’s poll question please visit
my blog to submit your answer.
Results from last poll:
How many lines of code did you write yesterday?
23% Nil, nada, zip, not a sausage
28% A smidgen – less than 100
21% 150 +/- 50
13% At least several hundred … but I’m not boasting
13% It is not the quantity it is the quality that counts
2% I managed all development using drag/drop/click
