Which CDN is best?
First thing first - there is no best CDN. There is a fundamental difference between accelerating small objects (thumbnails, stylesheets, javascript files) and large objects (video content and software downloads), and based on this the underlying physical infrastructure of CDN providers will be different. The same goes for the network. The important thing for you as a customer is to know what you want to achieve first before you fire up the search engine to spend countless hours looking at different providers.
Small objects delivery is heavily affected by latency - the time it takes for data to start travelling from one point to another, in this case - between the server and your visitors. Websites of today are complex and full of large number of small elements of which each requires a connection to be opened to the server and the latency builds up. On the other hand, small objects don't require a high network throughput since they are easy to move around and won't occupy big amounts of bandwidth while being delivered to the browser of the visitor.
Large objects, on the other hand, are different. Latency is less important since the majority of time the visitor will spend will be in downloading or streaming the content instead opening and closing connections. Network throughput, also known as bandwidth, becomes more important since it dictates the actual speed of the download. Insufficient throughput means longer running downloads and in the event of video streaming - buffering, playback interruptions and, as a result, a negative user experience.
Scattered infrastructure
Content delivery networks of the scattered type will have a large number of points of presence (PoPs), ideally all around the globe to guarantee low latency for your visitors around the world. If your purpose is small object acceleration this is the type of network infrastructure that will suit you best. A scattered CDN will always have a server close to your visitors, thus lower latency and a faster loading website.
Consolidated infrastructure
A consolidated CDN will have a smaller number of globally distributed PoPs, usually with a higher network capacity each. These PoPs will have large amounts of bandwidth available and the physical servers in them will have multiple SSD drives. Ideally, a consolidated CDN will always have enough resources available to eliminate bandwidth exhaustion, disk I/O overload, and by rule will be more resilient to unexpected traffic spikes.
Locations
One of the main objectives of a CDN is to deliver your content from a location closer to your visitors. If you are running a truly global website, service or app, the larger the network, the better. This, of course, comes at a price. Connectivity in some areas of the world is more expensive than others and you always have to weight in the pros and cons of paying for a PoP in an expensive location, especially if only a small percentage of your users will be served from it. Many content delivery networks will allow you to turn off these expensive points and serve these locations from other, more distant but cheaper points of presence. However, the costs of running these exotic PoPs needs to be recovered, which will translate into a higher price for the cheaper PoPs that you use. Unless you plan to use all these locations, select a network which offers the locations that you need to bring the costs down.
Features
The more features you have, the better, unless for when you don't need them. While you may need control over settings like on-the-fly image optimisation, for example, you rarely need to be able to limit the maximum speed your visitors can load your site at. On the opposite, when you deliver software or video, you may want to put some limits on the maximum number of connections per IP address or to avoid content hot linking by using secure tokens. The best CDN for your needs would be the one that has the right feature set for your use case, instead of offering an endless list of options that would inflate the price, but you would never use them.
Reliability
Due to their design, CDNs are less prone to downtime compared to your server or group of servers in a single location. By routing around failing servers and data centres, content delivery networks provideĀ high uptime and reliability. The best CDN for your needs would be the one that offers the highest uptime service level agreement at the price you are willing to pay, or an uptime higher than the minimum your are ready to live with.
Dedicated resources
Most content delivery networks will share resources between their customers, especially on the edge of their network where caching and delivery takes place. This approach may or may not work for you. Since the PoPs have finite storage capacity, each edge cache server will eventually have to purge some of it's cached content to make room for new content to be cached. The least accessed files will usually be the one to be purged first. If you are sharing the cache with another customer and their content is more popular than yours, you may end up being rotated out of cache frequently. You will probably be able to live with that if you are serving small files, as after all, these would be cached again on the next request and the cache fill operation would be fast enough. However, if you are serving VOD content or software downloads, hundreds of megabytes in size, this would put a strain on your origin server and will make for a not so good end user experience due to slower cache fill operations, so you want to have a dedicated edge cache instead.
Billing
The billing model that your CDN provider uses is another important thing to factor in.
Based on traffic
The traditional model is based on the amount of data that your website, service or app has transferred through the CDN's network over the course of the billing period. When you are accelerating small objects this model provides a good balance between value and price. The larger the objects, the less value and the higher price compared to the two models below.
95th percentile
This billing model provides unmetered connectivity. In other words, you are not being billed for the traffic that you generate, but for the maximum speed at which your content has been delivered during 95% of the billing period. During 5% of the time, you could experience bandwidth spikes that would not affect your bill. This billing model works best if you have a steady traffic to your service, website or app, with predictable usage patterns and no daily spikes during peak hours. Spiking beyond the agreed bandwidth for more than 5% of the time causes overage billing.
Unmetered
Like the 95th% model, the unmetered model is not based on the amount of traffic. You are billed based on the maximum speed at which your content has been served. This model is extremely popular with VOD, streaming and software-oriented services where bandwidth usage during peak hours is times higher than the rest of the time and bandwidth spikes are usually not so easy to predict. Expenses are easier to predict and no overage billing is applied.
Support
24/7 support is paramount. Content delivery networks are, by default, a managed service with continuous network monitoring and engineers ready to investigate and resolve situations as they appear. Where most customers actually need help and support is with integrations and questions regarding features, and your CDN provider should be there to help you when you need them.