Delivering Content to End Users

Under the Hood
Here’s another article from Blake Crosby about what makes CBC.ca tick:

How does CBC.ca deliver its web pages to millions and millions of users every day? We use something called a Content Delivery Network, or CDN for short.

Traffic Patterns
CBC.ca experiences spikes in traffic on a daily basis. This is typical of a news organization. At any given time a particular news story might be viewed by thousands of people at the same time and then five minutes later only a trickle of people are visiting the same page. This type of spiky traffic poses some challenges when building the web server architecture.
     The main problem is scalability. You have to be able to deliver your content to millions of people during breaking news - something that doesn’t happen very often. It is costly to build this capacity into our infrastructure if it’s only going to be used to it’s fullest potential a handful of times. Take this analogy for example:
     You don’t know when, but you know that you have to be able to throw a party for 2000 people in your home. Your home is only 1500 square feet and can only accommodate 50 people. Are you going to buy a multi-million dollar 15,000 square foot home to be able to accommodate those 2000 people a few times a year? Of course not. Most likely you would rent out a hall or the community centre to throw your party. A CDN would be your “hall”.

How CDNs Work
When you visit CBC.ca you are not talking to any of our web servers but our CDN instead. The CDN will check to see if the page you are requesting is in its cache. If it is, it will deliver it to you. If it is not, it will get the page from our web servers and then send it to you.
     There are rules to how often the CDN comes back to CBC.ca servers (the origin) to get new content. These rules are called caching or time to live rules. This allows us to trade content “freshness” for how much load the origin receives.
     The particular CDN that CBC.ca uses has “unlimited” capacity. That means that they can serve an unlimited number of users at any given time of the day. If there is a breaking news story the CDN will be able to deliver it to you regardless of the number of people trying to view the same story

Benefit to CBC.ca
Using my previous analogy, this means that CBC.ca doesn’t have to buy that multi million dollar home. It instead just pays for renting out the hall every now and then. It’s more than just about saving money though…
     The CDN is distributed. This means that there is no single point of failure. A user in Paris, France will not be talking to the same CDN server as a user in Sydney, Australia. This allows CBC.ca to position its content physically and network-wise closer to our end users. This results in quicker response times when trying to load the website.

What do you think?
Please feel free to pose any specific questions about how we use a CDN in the comments section. As well, if you have any other specific questions about how CBC.ca works on a technical level leave a comment. I will try my best to answer them in an upcoming post.

Email This Post
  CBC.ca web site, Under the Hood

2 Responses to “Delivering Content to End Users”

    Barbara W says:

    Well explained Blake. Even I understood it.



    Under The Hood: Test The Nation • CBC.ca web site • Inside the CBC says:

    [...] of the data is funneled through our Content Delivery System. Using their system, we are able to throttle the number of test responses that reach our database. [...]