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:
SimpleCDN | Amazon CloudFront | |
Upload Buckets | Yes (ftp upload) | Yes (through Amazon S3) |
Mirror Buckets | Yes | No |
CNAME support | Yes ($5 per CNAME) | Yes (free – up to 10 CNAMES per distribution) |
Peering/Edge locations | 13 | 14 |
Set Expires Header | Yes | Difficult but possible |
Set Gzip Encoding | Yes | Difficult but possible |
Payment frequency | Pay-as-you-go. Start with $15 free. Minimum $50 top-ups. | Pay-as-you-go. Billed at end of month. |
Minimum monthly fee/cost | None | None |
Starting Price per GB of transfer | 3.9 cents | 17 cents (more for non-US locations) + transfer cost to/from S3 |
Storage cost per GB / month | 75 cents | 15 cents (Amazon S3) |
Starting cost per 10,000 GET requests | free | 1 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.
I haven't used SimpleCDN in that capacity (for streaming), so I can't say for sure.
However, think of a mirror bucket as a "dumb file server". It won't do any processing tasks. All it does is serve up files. So if your streaming site is simply pointing the client's flash/whatever viewer to an mp3 file (so that the client is actually downloading an mp3 file and it's simply being played by the flash/whatever viewer), it should be workable. If you're actively streaming the file on the other hand, it won't, because a mirror bucket's just a "dumb file server" and won't run any scripts. It can serve files - that's all it'll do.
Now SimpleCDN does have streaming buckets ("Live!" buckets), but those look to be meant for video, and I doubt the price is really suitable for less-bandwidth-intensive audio streaming.
In terms of performance, when using mirror buckets, the file's often only stored on the CDN for a period of time. So every so often, it has to re-pull the content from your site which actually takes *longer* than serving it yourself (after which it should be shorter until it has to re-pull again but that really depends on the CDN's performance compared to your own).
Really, mirror buckets aren't designed for large files. They're better suited to multiple small static files which benefit from being distributed around the world and served locally to reduce the latency in pulling each one of them (like for a webpage with 20 jpg/gif/css files where overhead due to latency is larger than the actual time to transfer the files).
Keep in mind that if you're looking to optimize the performance of your server, it also depends on what you mean here. If your server load is high, it's generally due to scripts - actual file transfers take very little cpu power, and a CDN would do zilch for you here. If on the other hand the main issue is that you're choking your bandwidth, have heavy i/o, or have an insane number of connections causing problems, looking to serve the files from elsewhere isn't a bad solution to look into, and a CDN could be suited to the task, although there aren't any guarantees that it'll perform better - remember that the goal is to have gains by serving the files from an local edge cache, and when you're talking about a large single file, there isn't usually a lot in the way of gains to be had here.
Nearly every other day, I find my javascript files are not downloading from SimpleCDN which blocks rendering of my web app. Often times, the latency in downloads can be 5-7 seconds!
If they simply fixed these non-stop latency issues I've noticed for the past 6 months, I wouldn't leave. But unfortunately, I'm having an extremely difficult time finding another CDN that offers Origin Pull services that isn't insanely expensive.
If you use too much traffic on SimpleCDN (3tb+), even if you have enough balance for it, they will kill your account, purge your files, and keep the money, which was less of a problem when there was no minimum deposit. They also have a habit of reneging on price offers, such as when they offered a pay-once store-forever deal.
Unless something's changed recently, Cloudfront won't work without S3. That said, the pricing has changed considerably since this was written.
http://aws.amazon.com/s3/#pricing
SimpleCDN's also... well... gone now. As I indicated in the original update at the top, the comparison and pricing are outdated.