Warning, subjective question ahead! But hopefully a good one that won't get closed.
SCENARIO:
I have a branch office that currently has no on-premise server. They access everything including a DC across a 12Mbps WAN link (MPLS). The link isn't saturated, averaging around 20% utilization. The circuit is very stable and has a high SLA and excellent uptime.
However, large file transfers (mainly reads, not writes) from the file server across the WAN can be slow. We don't currently utilize DFS.
RESEARCH DONE:
I'm aware of WAN acceleration, using either dedicated hardware (Riverbed) or a dedicated software VM (Silver Peak) for example. But the pricing is outside of our current budget and the need isn't quite there yet from our perspective (since the issue is mainly in a "pull" scenario not necessarily push/pull).
I'm mainly looking at deploying a Windows server at this branch office and either utilizing DFS-R or BranchCache. Looking at a table comparison and assuming we are looking at a "hosted branchcache server" and not simply distributed:
It would appear there are benefits to both, even if both are "hosted" on a server.
QUESTIONS I ACTUALLY HAVE:
- In what scenarios do each of these techs shine and where do you choose one over the other?
- Looking at a hosted Branchcache server, can you set "pre-fetching" of certain folders/files on the central file server so that they are immediately accessible locally at the branch? Do you have to do this on a schedule (if it is possible)?
- Looking at DFS-R my concern (and apparently solved with 3rd party apps) is file locking and making sure the file gets updated properly during a write operation (ie, making sure if both copies are accessed and both are written to, which file takes precedence and what happens to the changes?). Ideal it would seem would be to lock any alternate replicas of the data, but is it really that big of an issue?
- Does Branchcache lock the central file for editing?
- Does branchcache only transmit the deltas back to the central file of what has changed?
- Would either technology be ill advised if the branch office server was going to be utilized as a domain controller as well?
BranchCache is read only and does not precache. It is mainly used for stuff like update distribution etc. - it is a CACHE.
DFS does no locking. NO WAN technology that is resilient does locking because locking is not possible if / when the WAN link goes down - so it is either resilience, or locking.
If you need versioning / locking to work properly, you only can use a central server. BranchCache in this moment CAN help with download speed for REPEATED downloads. Only.
If you dont have either - i.e. you need to do a lot of updates from many places (which is a QUITE unusual scenario - most of the time files are not locked like that in companies) then you have to pay up for more bandwidth when the need arises. Or yo ucan use some thind party DFS-R item, but then you have ANOTHER problem.... which is making sure that the bandwidth does not go down replicating tons of unused stuff because DFS-Replication is totally along file share lines, not an on demand element.
This really is a "Damn if you do, damn if you don't" scenario. Especially with a LAN (high latency, certain unreliability) in place.
BranchCache shines for example as update cache - no need to have a local WSUS server in a branch office. There is no locking as it is a pure caching mechanism - you can not edit a BranchCache file. That said, as there is no locking a write will lock the CENTRAL file - and the updated version then propagate, so it may actually work for you ;)
DFS is great for read only stuff (install images, software images for installation, policy documents that get edited centrally etc.). Funny enough MOST of the files I have fall in this category - the stuff we edit here is mostly in central sotrages with other sync technologies (sharepoint document management). DFS is a great technical solution for the technical replication needs.
http://pertorben.wordpress.com/2012/05/29/dfs-r-or-branchcache/
has a very good in depth explanation.
BranchCache may possibly work.... it wont stop single download latency but it will handle repeated reads. It also allows locking.
Edit: Upon forther chechking it looks like preloading is now possible. Please refer to
http://technet.microsoft.com/en-us/library/jj127252.aspx