Learn to use Visual Studio, Visual Studio Online, Application Insights and Team Foundation Server to decrease rework, increase transparency into your application and increase the rate at which you can ship high quality software throughout the application lifecycle
There are many aspects to consider when estimating your needs for a Team Foundation deployment. Understanding the size and scope of your current organization and understanding the requirements and limitations of Team Foundation Server deployment types will help you make the necessary planning decisions.
In order to plan your Team Foundation deployment, you must consider several factors; such as the size of your organization, the tasks and roles of your users, your current hardware specifications, and the configuration of your network. You should also consider how many people are available to support your Team Foundation deployment and perform maintenance tasks. Each of these factors will help you understand your current needs. Not all of the factors will lead you to the same conclusions, but a careful consideration of the whole will guide you in creating a deployment plan that meets your organization's current needs.
The most common considerations are discussed briefly below and are intended as general guidelines to help you through the planning process. You might have additional factors you want to consider, such as multiple language support. Write down the considerations unique to your organization. Use that list when planning and installing Team Foundation.
Consider how many users you plan to support. A single-server Team Foundation Server deployment is designed for up to 100 users and a moderate number of projects. Dual-server Team Foundation Server deployments are designed for more than 100 users, for a large number of projects, and for high-demand environments. Similarly, the number of users you plan to support will affect your planning for other computers in your deployment, such as build servers and test rigs. Understanding your users' roles, such as software developers or software architects, will also help you plan for Team Foundation clients appropriate to your organization's needs.
Consider the types and numbers of tasks your users need to perform. As stated above, the number and complexity of projects you plan to support will help you determine whether you deploy a single-server Team Foundation Server or a dual-server Team Foundation Server. Similarly, understanding the types of tasks your users need to accomplish, such as building or testing software, will help you plan for additional components such as build servers and test rigs.
Consider your current server and client computers. Team Foundation components have specific requirements for CPU speed, memory, and available hard drive space. Will you need to upgrade some of your users' computers? Will you need to purchase additional servers?
Consider the average latency of your network and how your users will connect to Team Foundation Server. Network latency of more than 350 milliseconds can significantly degrade Team Foundation performance, or even lead to intermittent server unavailability. Is your average network latency within these limits? Will you need to upgrade your routers and increase the speed of your network traffic? Will you need to take additional steps to ensure Team Foundation Server availability?
Consider whether you will need to support remote users and how these users will connect to the Team Foundation servers. Will Web access be sufficient for these users, or should you consider requiring users to make a virtual private network connection to your network before connecting to Team Foundation Server?
Consider the daily and weekly maintenance tasks you will need to perform. How many people will be maintaining the Team Foundation servers? How many people will be available to assist users? How will you manage backups, and how long will they take? Some of these considerations might lead you to make different choices than if you only consider the number of users or the scope of the deployment. For example, a dual-server deployment that is optimized for rapid server performance will take more time to maintain than a single-server deployment. This could place an undue strain on a small organization with a single person responsible for all maintenance tasks.