Content Delivery Networks (or ‘CDNs’) provide a way to spread the static assets for a web application to different geographies and different networks to improve the performance of a web application. The performance gains are primarily the result of assets being located closer to the end user and on faster network connections. As a best practice, SOASTA recommends that web applications make use of CDNs whenever possible. It is an easy way to improve the performance of a web application and the number of concurrent users a web application can support.
Some have the misconception that simply implementing a CDN for a web application eliminates the need to pay further attention to performance concerns. That couldn’t be farther from the truth. Implementing a CDN certainly improves the performance of an application. However, all it does is move the needle. Let’s say you have a site that can support 3,000 concurrent users before the application bogs down. Adding a CDN to the mix will perhaps allow you to support 4,000 users before the application bogs down. It just changes the point of failure – not eliminate it. And that assumes that the delivery of static assets was the bottleneck in the first place.
A CDN does not help overcome performance issues at the application and database layers. We’ve worked with many large, well-known web applications and found significant issues at the application and database layers – that weren’t mitigated by the use of Akamai, Internap, or some other CDN vendor. Implementing a CDN won’t help you overcome a misconfigured java heap. It won’t help you overcome garbage collection issues. It won’t help you overcome indexing or other database bottlenecks. It won’t help you overcome a misconfigured load balancer. These are the issues that running a load and performance test utilizing real-world user scenarios will help uncover.
Based on the tens of thousands of tests SOASTA has executed, CDNs and static resources are rarely the point of failure in an application (unless the network is saturated because a CDN has not been implemented). More often, the performance bottleneck is at another layer of the infrastructure: load balancer, firewalls, application, and database servers. As a result, if you don’t run load and performance tests against your web application, you aren’t even testing the most likely places your web application will break.