Okay, let's quickly review 2.4.e Content Delivery Networks (CDNs) as a system design pattern.

  • Definition: A CDN is a geographically distributed network of proxy servers (called edge servers or Points of Presence - PoPs) deployed in multiple data centers across the internet.

  • Primary Goal: To deliver web content (especially static assets) to end-users with high performance and high availability by serving the content from an edge server located geographically close to the user.

  • How it Works:

    1. When a user requests content (e.g., an image or CSS file) from a website using a CDN, DNS resolution (often using specialized GeoDNS) directs the request to the nearest available CDN edge server, rather than the website's origin server.
    2. Cache Hit: If the edge server already has a cached copy of the requested content, it delivers it directly to the user. This is very fast due to the geographical proximity.
    3. Cache Miss: If the edge server does not have the content cached, it forwards the request to the origin server (where the original website content is hosted).
    4. The origin server sends the content back to the edge server.
    5. The edge server caches the content locally (according to caching rules like TTL) and delivers it to the user.
    6. Subsequent requests for the same content from users in that geographic region will now likely result in a cache hit at the edge server.
  • Typical Content Served:

    • Static Assets (Primary Use): Images, videos, CSS stylesheets, JavaScript files, fonts, downloadable files (software, documents).
    • Dynamic Content (Sometimes): Some modern CDNs offer dynamic content acceleration features, optimizing routing and connections back to the origin, but the core benefit remains strongest for static, cacheable content.
  • Benefits:

    • Reduced Latency: Content is served from nearby servers, significantly decreasing load times for users.
    • Reduced Origin Server Load: Offloads bandwidth and request handling for static assets away from the origin infrastructure, saving costs and improving the performance of the origin for dynamic requests.
    • Increased Availability & Reliability: Distributes content across many servers, providing redundancy. Can absorb traffic spikes and mitigate the impact of origin server downtime for cached content.
    • Enhanced Security: Many CDNs include DDoS protection, web application firewalls (WAF), and other security features at the edge.
    • Global Scalability: Allows applications to serve a global audience efficiently.
  • Relationship to Other Patterns:

    • Utilizes a large network of Reverse Proxies (the edge servers).
    • Relies heavily on Caching principles and mechanisms (TTL, cache invalidation).
    • Leverages DNS for routing users effectively.
  • In an Interview: CDNs are a standard part of almost any large-scale web application design. Propose using a CDN to serve static assets (images, CSS, JS) to improve performance, reduce origin load, and enhance availability. Understand that it works by caching content geographically closer to users.

Advertisement