A Content Delivery Network (CDN) is a critical component of nearly any modern web application. It used to be that CDN merely improved the delivery of content by replicating commonly requested files (static content) across a globally distributed set of caching servers. However, CDNs have become much more useful over time. For caching, a CDN will reduce the load on an application origin and improve the experience of the requestor by delivering a local copy of the content from a nearby cache edge, or Point of Presence (PoP). The application origin is off the hook for opening the connection and delivering the content directly as the CDN takes care of the heavy lifting. The end result is that the application origins don’t need to scale to meet demands for static content.
CDNs do a lot more than just caching, now they deliver dynamic content that is unique to the requestor and not cacheable. The advantage of having a CDN deliver dynamic content is application performance and scaling. The CDN will establish and maintain secure connections closer to the requestor and, if the CDN is on the same network as the origin, as is the case for cloud-based CDNs, routing back to the origin to retrieve dynamic content is accelerated. Furthermore, content such as form data, images, and text can be ingested and sent back to the origin, thereby taking advantage of the low latent connections and proxy behavior of the PoP. Combining static and dynamic content delivery, customers are now using CDNs to provide whole site delivery and interactivity.
Caches have also become much more intelligent, providing the ability to inspect information contained in the request header and vary the response based on device type, requestor information, query string, or cookie settings. CDNs can be directed to retrieve objects from multiple origins, enforce protocol policy, negotiate SSL connections, and restrict object access by location or authentication credentials. The recently developed ability to perform logic computations at edge locations provides even more flexibility for dynamic web applications. The CDN is able to quickly inspect requests and modify the behavior of the caching logic, authentication, and even modify the content as it is being delivered or ingested. Pushing application logic to an edge has provided new possibilities for application developers and off loaded origin compute requirements to a distributed intelligent network.
Finally, there is the capability for a CDN to provide network and application level protection preventing harm or loss of service by filtering traffic with web application firewalls and DDoS protection services integrated at the edge locations and integrated into the caching network. The combination of security controls and very large amounts of network bandwidth keeps bots, scrapers, and hackers at bay without compromising application availability or performance.
Amazon CloudFront is a large scale, global, and feature rich CDN that provides secure, scalable and intelligently integrated application delivery. A diagram on how Amazon CloudFront integrates into AWS components is shown in the following diagram.
Further reading: What Startups Should Know Before Choosing a CDN