Introduction to Cloud Patterns for Enterprise Apps

January 7, 2015 Sessions , , ,

The Azure Weekly runs every Tuesday as Microsoft UK initiative and is aimed at the techie who has not yet had any/much exposure to Azure but who just wants a leg-up to get started. This is a more practically focused session than a theoretical/architectural session.

On January 27th, 2015 12:30-14:00 (UK time zone), I will be presenting as a guest speaker on Introduction to Cloud Patterns for Enterprise Apps.

The overall agenda of the session is-

Steve Plank – Demo’s on

  • Creating a Microsoft Azure WordPress website
  • Creating a Microsoft Azure ASP.Net website
  • Creating a Microsoft Azure Virtual Machine
  • Creating a Microsoft Azure Mobile Services (with Android client)
  • Creating a Microsoft Azure Cloud Service
  • How to sign up for a free Microsoft Azure trial

Punit Ganshani – Insight on

  • How best we can transform an on-premise application to an Azure-hosted cloud-aware application
  • Reap the benefits of scalability and high-availability
  • Critical design decisions every developer or architect has to make and associate their solutions with Cloud Patterns

You can register for the session on: Microsoft UK Azure Weekly Portal

Other Azure Weekly Sessions planned for January 2015 can be viewed at Get Started with Azure Weekly Series.

Team Foundation Server : Understanding the Architecture

November 23, 2013 ALM, TFS, Visual Studio , , , ,

This article will briefly describe the high-level architecture of Team Foundation Server.  It will help you understand the different tiers in TFS, their responsibilities and firewalls.

Heard of TFS as a Service, what is it?

TFS as a Service is a cloud-based application life management (ALM) system that integrates source control management, product backlog, build automation, quality and deployment and encourages team collaboration to achieve efficiency in following processes.  In its free service offering, you can register on for an account and get started.  All the infrastructure (all tiers) is pre-configured on an elastic-cloud owned by Microsoft.  As a consumer, you would be provided with services without having to go through the configuration part of TFS.

But we are not allowed to upload our code to public clouds in my organization?

If you are working in an enterprise with restricted environment, chances are that you have your infrastructure on which TFS has been installed.  This is to have enhanced security and sometimes to comply to the laws of the nation where the data resides.

Now in this case, you will have to configure the Team Foundation Server on your own and hopefully this article will serve as a good start.


TFS is primarily structured into 3 layers. 

  • Data Tier – TFS uses SQL Server as its data storage
  • Application Tier – The application tier consists of
    • TFS Server – Typically a Windows Server 2008/2012
    • Team Foundation Web Services  -  These web services (http/https) act as a facade for TFS clients.  They exchange data with their clients using Client Object Model.
    • Server Object Model – Data exchange between TFS Server and the SQL Server (may be on a different VM/physical box) happens using Server Object Model.
  • Build Tier – The build tier consists of
    • Build Service – The build service (ASP.NET Worker Process) contains of Build Controllers and Build Agents
    • Build Process Object Model – The process object model contains of the process workflow that has to be followed when defining the build definition
    • Client Object Model – Client Object Model is the data exchange between TFS Server (Application Tier) and Build Service

It is important to understand that the application tier referred above is the application tier of TFS and not your business application.  Based on several factors such as geographical spread, server-load, network topology, proxies, etc. you may have one or multiple servers in application tier.  You can configure the build tier on the server forming the application tier.  Some deployment scenarios prefer configuring one build server for multiple TFS servers.


A TFS Server can hold more than one code-repository and have isolated & customized build process(es) set up on one or multiple build servers.

Let’s understand this with an example –

Your TFS server url is This TFS Server can host multiple TFS Projects say ProjectA, ProjectB and ProjectC.  Each project has a code repository say RepositoryA, RepositoryB, RepositoryC and each repository has 4 branches – Development, SIT, UAT, PROD.  The code in the repositories resides on the Data Tier and is accessible using client applications that interface through the Application Tier.

Now, for each branch you can configure one or multiple build processes.  For PROD, you may like to have Nightly Builds, for Development you want to have a build triggered at every check-in and so on…  These builds require a build server.  You can use 1 build server for all the builds or you can have a separate build server for each Repository, or you can share build server between 2 repositories.

The decision to use one-build server or more depends on the peak-load, expected build queue, h/w infrastructure and a lot of other parameters.  If you do not want build services, you do not need to configure a build server at all.

With this understanding, we will deep dive into the responsibilities of each tier

Data Tier

Data Tier is formed of a SQL Server running on a Windows Server VM/physical machine.

A SQL Server consists of following databases

  • TFS_Configuration  – Configuration Database that stores the TFS resources and settings
  • TFS_Warehouse  – Data warehouse database for report generation
  • TFS_Analysis – Aggregated data of all Projects on a TFS server
  • Project databases – Database for each Project in the collection

In TFS 2013, you may see some additional databases (with names starting with WSS) that are required to manage the TFS Administration Portal.  This administration portal runs on SharePoint Foundation.

Application Tier

The application tier consists of components such as

  • Version Control – Source code versioning & management
  • Build Service – Light-weight ASP.NET Worker Process that interacts with the Build Tier
  • Work Item Tracking – Product backlog, bug, work-item tracking & management
  • Team Foundation Framework Services – Web services, Registry, Security, Event, Identity Management, Administration
  • Administration Portal – Built on SharePoint Foundation, the portal serves as one-stop for defining projects, team, work-items, reports, permissions, etc.

All these components are hosted on IIS and Windows Services on a Windows Server VM/machine.  The Team Foundation Framework Services act as a facade for all client tools like TFS Explorer, Visual Studio, etc.

Build Tier

Build tier consists of build services that enable configuring a build controller and build agents.  A build controller controls the build queue and assigns the responsibility of build to a most available build agent.  If no build agent is free, it will queue the build request.

It is not necessary to have the controller and agent on the same machine.  This allows creating a build farm that can have multiple build machines.  One of the scenarios for an enterprise build environment would be

A build farm with S servers on which C (C<S) controllers are running and A (A>S>C) build agents are running. In such a scenario, the likely hood of a build getting queued for a long duration is rare.  However, actual values of A, S, C depend on number of applications, peak-load, build time, locale, infrastructure costs, cross-border restrictions, etc.


TFS architecture has been designed to allow extensibility and building a large farm at data-tier, application-tier or build-tier.  When configuring TFS on a farm, the inter-server communication happens through web services.  In an enterprise environment with high-security, you may have to check if any of the ports used in web service communication is blocked.

By default TFS uses following ports

  • Team Foundation Administration Portal and Reporting – port 80, 443
  • Team Foundation Client Web Services – port 8080
  • MS-SQL – port 1433 (TCP)
  • Team Foundation Application Tier Web Services – port 8080
  • Team Foundation Data Tier Web Services – port 8080
  • Build Services – net.pipe, 9191, 443


Hope this helps in understanding TFS architecture.

Team Foundation Server : Managing Sprint and Releases

March 15, 2013 ALM, TFS, Visual Studio , , , , ,

This is continued from the series of articles on TFS.  I would recommend you reading two articles if you are new to TFS

So I am assuming that you have a project created and a Product Backlog created in your TFS website.  So when you click on Work menu, so see a menu at the left with Current Sprint 1 and some Future Sprint x.


Now this is not what you would always what.  The number of Sprint is different for each project and you might want to customize it.  So to customize that click on the right most option in the top-menu


This will bring you to a Project Profile page which has a different top-menu as shown below


Click on iterations menu to view all the Sprints.  Hover over Sprint 1 and click on Set Dates and set a start date and an end date.  You can also give a meaningful name to Sprint 1 but for these tutorials and for ease of understanding I will not change the name.

Click on Save and Close to save the changes


Un-tick the Sprint that are not applicable to your project


This way you can configure Sprint and Releases for your project using TFS.

Team Foundation Server : Creating Product Backlog

March 9, 2013 ALM, TFS, Visual Studio , , , , , ,

This post is continued from TFS – Creating an Account & Projects so if you haven’t read that and are interested in knowing how to create a project in TFS, reading that article is worth while.

Also since the focus of this article is TFS for SCRUM (Agile methodology), it would make sense in knowing history of Agile and having some basic knowledge of SCRUM on Wikipedia.  However, a brief information about Product Backlog and Agile terms will be provided as we progress.

Product Backlog – Product Backlog is a task sheet and is little different from a TO-DO list.  The difference comes in the way a product backlog and its items are dealt with in a SCRUM process.

  • An item in Product Backlog refers to a functional or a non-functional feature that adds some value to the customer
  • A product backlog does not contain granular details or low-level implementation details or artefacts of a task.
  • Items higher in priority or to be included in the current Sprint are listed above than those out of the scope of current Sprint.
  • Each item in product backlog is assigned to an individual in the team.

    A product backlog

With this let’s proceed to creating a Product Backlog items in TFS for our project CInject that we created in our previous article.

Click on the Project in the browser and then on the button “Product Backlog Item” and enter the details requested.



Here ‘Create UI’ is the title of the Product Backlog Item and assign it to …  Oh, you do not have any team members in your team.  Let’s stall this process here and first add a team member.  If you figured out how to add a team member, you can skip the next section.

Adding a Team Member to your project


Click on the Home Toolbar and then on “Manage all members…” link


If you are using TFS Preview (or TFS over cloud) you will be required to enter the Live Id of your team member.  If you are using TFS for Enterprise, you will require to enter EmployeeId, or Email Address


Having done that, let’s get back to creating a backlog item.

Creating a Product Backlog Item



You can fill in the required (and obvious) details as I have done and click on Save and Close button.  You can add attachments, external links, any acceptance criteria.  Now this Product Backlog Item can have multiple sub-tasks in it.  When creating a graphical UI, you are required to create Toolbars, Menu strip and some widgets.  So let’s click on Tasks tab and add a sub-task (click on ‘New Linked work item’).  The sub-tasks will be referred to as ‘Work Items’ to a Product Backlog Item.


I’ve created 3 Work-Items for the Item ‘Create UI’ and when clicked on “Work” Menu we get the project dashboard for Sprint 1 as shown below

Backlog View


Storyboard View of the backlog items


That’s how a Product Backlog Item is created and Work Items in each PB Item are added.  In the next article, the focus would be updating the tasks and tracking the progress – a task each SCRUM Master does.

Follow on Feedly