Building the solution: Part 2 – Video content delivery
The overriding cost when dealing with video delivery on the web is bandwidth cost. The other major cost can be storage, depending on how big your catalog is. But even then bandwidth will generally dominate in the cost model.
For small companies, it is generally not financially feasible to try to serve video yourself. This is where a Content Distribution Network comes in. A CDN provides an outsourced service where they serve content for you for a price. Video is an obvious candidate because it’s so huge, but large sites often use CDNs for images or audio as well. A good example here is Myspace who uses Limelight Networks for delivering images.
A CDN works by providing a farm of servers for delivering your content to your users. All you need to do is to transfer your content to the CDN, and then give your user a link pointing to the CDN’s server pool instead of your own. Content can be transferred to the CDN either by pushing it up (typically using FTP) or by having the CDN pull it from your sever on demand. Pull-on-demand is the better model (it’s actually easier to implement since your just web-serve the content to the CDN) and supports more efficient caching strategies by the CDN.
CDN service costs money, but one great advantage is you save on hardware by not having to run a large pool of servers yourself. And in exchange you’re likely to get access to much better streaming capacity then you could set up yourself. For a small company, this advantage alone is enough to make the CDN worth it. However, depending on your situation the raw bandwidth charges may well be lower through the CDN than you can negotiate yourself.
A CDN generally charges based on bandwidth usage and storage. Costs-per-unit should drop as your usage grows. Bandwidth can be charged based on either total data transferred over a month, or based on peak transfer rate. Charging based on data transfer is simpler and easier to understand. If you serve 1 terabyte of video over the month, then you pay 1024 * the rate per Gig. Peak transfer pricing is a little harder to figure out. A typical formula is 95% peak. What happens is that the CDN samples your transfer rate periodically (say every 5 minutes). At the end of the month they throw out the top 5% of the highest samples. The next highest sample then determines your usage. The result is that you won’t get hit if you have a few short-term spikes in a traffic. But, if you got hit by a “slashdot effect” say, and traffic spiked for 48 hours then fell, then you will get pegged towards the peak. Overall, if your traffic is very consistent (which generally requires a lot of traffic), then overall transfer is probably the way to go. However, if you have spikey traffic, but the spikes are short-lived, then you may save some money paying on a peak transfer basis.
Ok, but what does it really cost?
Here again, there is more to the question. Different services have different pricing. For example, basic HTTP GET delivery will be the lowest cost per GB, but things like video streaming (mms or flash) will be charged at a higher rate.
For basic HTTP delivery, you should be looking at $60 – $100 per MB of peak usage. So if you have a peak transfer of 100 Mbps, that’s $10,000 per month. The trick now is to estimate your peak bandwidth usage (I’ll post some ideas on that later).
For Flash streaming, I have seen $.75 – $1.25 per GB transferred. To get the lower rates, you have to commit to higher minimum levels.
Where can I get it?
The market leader is Akamai/Speedera. I’m sure they have a great service, but I suspect they are also the most expensive. One salesguy’s quote to me was “You don’t use us to save on bandwidth costs”. Ouch! Other options are Limelight Networks, Vital Stream, and Mirror Image. All of these guys purportedly support Flash streaming.