At the source control part of Team Foundation Server can be appended a proxy installed on a separate server. The purpose of this option is to place the downloaded objects in a cache and thus allow access to the sources directly via this proxy rather than the main server, reducing the bandwidth to the latter. The most common scenarios are remote work and server overhead. Let us see these two possibilities together.
Remote team working
Let’s take a first example in which our TFS server is used by several development teams, some of which work remotely. Note here that by distance, I mean outside the LAN. Basically, some equipments are on the same network as the server and others connect from the outside. In such situations, remote teams may encounter latency issues when retrieving files from the server (Figure 1).
This is where our proxy comes in. By adding a server on the external network, you can install a TFS proxy that will pick up the files on the main server and place them in its cache. On-site teams will be able to connect to the proxy server over LAN rather than directly connect to the TFS server in WAN, thus benefiting from a faster connection when retrieving files (Figure 2).
Of course, the first time a file is requested, the proxy must first go to the main server and the access time will be longer. But during the next accesses, it will be directly recovered from the cache and the access time will therefore be much faster.
Let us now discuss another case that may require the use of a proxy. When the main server is too busy, performance may be affected and recovery of files on the source control takes a long time. These solicitations can come from different sources: project team members (project managers, analysts, architects, developers, testers, …), work items actions, build servers, test servers, etc. Overload may come faster than you think. It is therefore sometimes useful to place one or more proxies on the LAN, so that the performance is distributed equally when retrieving files. To take a concrete example, it happens to have to launch a build in the middle of the day, while all the team members work. If you configure the build server to retrieve sources through the proxy and not directly through the TFS server, you can use the cache largely and thus relieve the main server and make it more available to the teams. Even if this second case is possible and would solve your performance issues, I would rather recommend to scale the main server up if possible, as it is always better to directly work on the main application tier than using a cache.
I hope you have clarified the usefulness of a proxy within Team Foundation Server. All you have to do is identify potential needs in your projects and, if necessary, install one or more proxies in your infrastructure.