SimpleCDN vs Amazon CloudFront

UPDATE 2 (Dec 11 2010): SimpleCDN is currently DOWN!
Posted at
mattgadient.com/simplecdn-down-for-good?

Update: SimpleCDN has changed somewhat in their offerings (there seems to be a move away from the “small customer” base), and thus, much of the following is outdated.

I recently started up an account at SimpleCDN to help offload a webserver a little bit by putting static images there.  After a couple days, I decided to give Amazon’s CloudFront a try as well.

 

I’ll start off by saying this was originally going to be primarily about the performance differences. However, after a few hours of testing, I found there’s not enough of a difference to be worth mentioning – neither was consistently better than the other. Performance-wise, for the most part it really boiled down to how close each test location was to the nearest respective edge server. This was relatively small-scale testing with a site that pulled about 12 images per page (and thus pulled 12 items from each CDN), but I concluded that neither’s going to make a lick of difference performance-wise… at least, not for the typical individual who’s looking at these two for solutions.

That said, time to take a look at the merits of each at a basic level:

SimpleCDNAmazon CloudFront
Upload BucketsYes (ftp upload)Yes (through Amazon S3)
Mirror BucketsYesNo
CNAME supportYes ($5 per CNAME)Yes (free – up to 10 CNAMES per distribution)
Peering/Edge locations1314
Set Expires HeaderYesDifficult but possible
Set Gzip EncodingYesDifficult but possible
Payment frequencyPay-as-you-go. Start with $15 free. Minimum $50 top-ups.Pay-as-you-go. Billed at end of month.
Minimum monthly fee/costNoneNone
Starting Price per GB of transfer3.9 cents17 cents (more for non-US locations) + transfer cost to/from S3
Storage cost per GB / month75 cents15 cents (Amazon S3)
Starting cost per 10,000 GET requestsfree1 cent

Preface:
SimpleCDN was designed straight-up as a CDN, and meant to be simple (hence the name). CloudFront on the other hand is built upon the structure of the other Amazon services, and can be thought of as more of a “bolt-on”. In fact, CloudFront uses (and requires) the Amazon S3 service for hosting the files – CloudFront then pulls the files to the CDN from S3. These are very different approaches. SimpleCDN is generally simpler to use, and more powerful in the options it offers. That said, anyone already using Amazon S3 extensively will probably feel more at home with CloudFront.

Upload Buckets:
For those unfamiliar with the way these work, you basically upload the files you want on the CDN into what’s called a “bucket”. It’s a pretty simple concept – you basically end up with a new URL where those files are located – no different from linking to files on a separate server/website, except that these are now on a CDN and should be served closer to whichever users are requesting them. Both SimpleCDN and CloudFront can use them. For SimpleCDN you use your favorite FTP client to upload the files. For Amazon CloudFront, you put the files up on Amazon S3, and set it up to pull from there.

Mirror Buckets:
For those unfamiliar with these (also called “origin pull”), these are often easier to implement with dynamic websites – particularly those where static content you may want on the CDN (such as images) are often uploaded/added to the site. Both WordPress and Drupal have plugins for these. All the content you want on the CDN stays on your server/website. Requests for those files are redirected to the CDN which “pulls” the file(s) from the server/website, and begins serving them through the CDN. SimpleCDN has support for this. CloudFront does not.

CNAME Support:
This is often more of a “vanity” feature than anything else. It allows you to use something like cache.mywebsite.com, images.mywebsite.com, static.mywebsite.com, cdn.mywebsite.com ….. you get the idea. You basically use a subdomain or domain that you own, and use a CNAME in your DNS settings to point it to the CDN. That way, viewers see your pretty, professional-looking name as the page loads instead of an ugly long url. To be frank, most viewers won’t see/notice the difference with content that’s loaded within the page (template images, css, etc). In any case, both SimpleCDN and CloudFront offer this. SimpleCDN charges a 1-time fee of $5 for each CNAME you set up, while Amazon includes them for free (but with a max of 10 per distribution). This is one area where Amazon really has the upper hand price-wise, particularly if you’re looking to add a lot of CNAMES.

Peering/Edge Locations:
Both have a comparable number of locations, and for the most part they’re in relatively similar geographical regions. Unless you have a *very* specific geographical target (a specific city for example), neither’s likely to come ahead in this respect (the similarities were reflected in performance testing I did).

Expires Header and gzip Encoding:
SimpleCDN wins in this area hands-down. There are currently 17 combinations, and what they enable (a certain expires length, gzip, or both for example) depends on what URL you use to access the bucket making it easy to mix/match between them. As far as Amazon’s side goes, from what I understand you can set expires headers through S3 which will be pulled to CloudFront, but you need particular software to do it. CloudFront won’t gzip content either. You can technically get around it by pre-gzipping the content and using the PHP on your site to determine whether to grab the gzip or non-gzip version of items depending on the browser’s capabilities, but really… you get the idea. It’s ugly. SimpleCDN is simple, easy, and just plain comes out ahead here.

Payment:
SimpleCDN is completely pay-as-you-go, and they currently start you off with a free $15. At under 4 cents per GB, you’re looking at close to 375GB of transfer before you use it all up (minus any storage). You can also use part of this free $15 for the $5 CNAMES if you’d like. Once you’ve used it up, you’ll have to add more if you want the CDN to remain accessible. The lowest amount you can add at a time is $50. Amazon on the other hand simply bills you each month for your usage. Which is better is a matter of perspective.

Minimum Monthly Fee/Cost:
Neither have monthly fees, minimums, or costs. You pay for what you use – that’s it.

Starting price per GB of transfer:
SimpleCDN charges 3.9 cents per GB, no matter where the traffic is coming from. This gets even cheaper if you hit the 100TB mark in any given month. CloudFront on the other hand is a fair bit more expensive. Amazon charges anywhere from 17-22 cents per GB (depending on the location the content’s pulled from) for the first 10TB, after which the price starts going down. SimpleCDN is clearly ahead here.

Storage cost per GB / month:
SimpleCDN charges 75 cents per GB of storage per month. Since the Amazon content is stored on their S3 service, it’s much cheaper – starting at 15 cents per GB per month. However, with Amazon you’re also hit with all the S3 rules – so you’re charged for both data-transfer (including each time CloudFront pulls the files from S3), as well as GET/PUT/COPY/etc requests. Amazon is still likely to come out ahead here (especially if you store many terrabytes of seldom-accessed content), but it’s worth doing the math to see.

Starting cost per 10,000 GET requests:
SimpleCDN doesn’t charge for these. Amazon does, and Cloudfront will charge a penny for every 10,000 GET requests. Calculate how many static contents are on your website page that you’d be serving from the CDN. Multiply it by the page views in a month and you’ll get a rough idea as to how much this will cost.

A few notes I couldn’t quite squeeze up there:

  • If you use SimpleCDN and decide to use CNAME’s as well, be sure to type it in correctly when creating it! Most of SimpleCDN’s website is very easy/intuitive, but the CNAME part is one area that isn’t as clear until you *read* it.
  • While you can use as many expires/gzip options and combinations as you want, note that each CNAME can only point to ONE of these combinations at a time.
  • There’s a Firefox plugin called S3Fox which is one of the quickest/easiest ways to upload files to Amazon’s S3 (and then push to CloudFront). You do have to read the instructions though – otherwise you’ll be right-clicking for a while to figure things out.
  • Setting expires headers can help to reduce your transfer costs – possibly by a substantial amount.
  • SimpleCDN has changed their policies in the past – they used to charge a flat rate depending on the file-size, and then give unlimited transfer. Hopefully they’re out of the “growing/learning/testing” phase and are well-settled on the current policies and prices but be aware that it wasn’t that long ago that things changed – they could always change again (in other words, don’t go adding enough money to cover you for the next 5 years of traffic – things could change)

So which CDN comes out ahead? Definitely SimpleCDN. It’s easier to use, it’s more flexible/powerful, it’s less than 1/4 of the cost of CloudFront, you won’t go mad with a calculator trying to predict your costs, and the “Simple” part of the name is well-earned.

That said, Amazon CloudFront is still a viable option in certain cases. If you’re already familiar with (and like) the S3 service, adding CloudFront to your mix may be a no-brainer. It’s also likely to be a less-risky bet since SimpleCDN has already scrapped/revamped their entire pricing structure once (much to the dismay of many), whereas Amazon’s been a relatively stable company for years. Amazon also has many strengths as a storage option. Finally, if you’re looking for a lot of CNAME’s and aren’t as concerned about expires headers and gzip (or are willing to go to the lengths to manually work them out), Amazon does give them out for free.