With the Announcement of the Microsoft AJAX CDN a debate arouse this morning about whether utilizing a public CDN for common libraries was a good idea for intranet applications. I can see both sides of the argument but without revealing too much of our discussion I wanted to put forth the topic on Stack Overflow to see other's opinions.
The main advantage of a CDN is that it delivers content from close to the user. Your intranet is closer still!
The second advantage is that the user might already have the content cached, which again isn't all that relevant on your intranet - you can set up caching to your own requirements, and delivering the content will be fast anyway.
The main disadvantage is that you put a key piece of your application into someone else's hands. Unless the locality advantage is important, which in your case it isn't, that's a pointless risk.
The only people who might benefit would be remote workers, VPN'ing into your intranet, but even then the risks are likely to outweigh the benefits.
Let's say most usually user of intranet are all on the same network so it would be faster to put your file on a local server.
But if your user are all around the world and using vpn or something else to connect to the intranet it might be not a bad idea to use a cdn.
RichieHindle is right, CDN performance is not going to be better than across your own internal network.
Well it depends on several things.
Is this intranet just at one location or spread across multiple locations? If so are those locations in the same state/country/contininent? Obviously the more locations you have and the more distance between them, the more utility a CDN would provide.
What server(s) will this be hosted on? Are the servers used to host this application already bogged down from other running process/sites, etc? The less server resources you have available, the more beneficial a CDN will become, as it will reduce the amount unnecessary server traffic and resources being used.
How many people will be using this application simultaneously? If you are going to have lots of requests coming in every minute/second for static content like images, scripts, etc then more and more of your resources are going to be used delivering that content, slowing down the application as a whole. This one goes hand-in-hand with the above question as well.
There's many other things to consider when looking at a CDN, but those are a few of the major points to think about.
I'm a big fan of using CDNs for these things, but I think it would be a rare exception when using Google or Microsoft's CDN would be appropriate for an Intranet application.
- For users on an internal network, an external request (even to a fast, nearby CDN) will be much slower than an internal request.
- Often, these things need to be accessible when no Internet connection is present on the client.
- Even if you do have geographically dispersed VPN users, all of their requests are often being routed through the company's network anyway, making the CDN request even slower than the VPN-local request.