Migrating to Amazon’s S3 cloud service for delivering media content

We were starting to run out of storage for the media (images, videos, audio, etc.) for our sites, so there were two options: either spend loads on getting more rack space and hardware for storing media files; or spend vastly less putting the media onto ‘the cloud’.

I investigated a cloud option in the form of Amazon Web Services and discovered that their Simple Storage Solution (or ‘S3’) could do everything we needed, and it seemed to be an effective, low cost and low risk option so we decided to give it a try.

Amazon provides a REST interface for getting data to and from your ‘buckets’ (which is their term for the storage areas you can create to put the media objects into). There are many toolkits available for developing with S3, and we use the S3 PHP class which makes development incredibly straightforward.

You can easily assign any DNS names you like to your buckets, so it was then just a case of setting up the buckets with suitable DNS names and changing our site architecture to use these new cloud-based locations for media instead of the original datacentre locations.

We went live with this a few weeks ago and have been moving more and more sites to the new S3 solution. So far it’s been very successful, with only a couple of brief blips in service which were clearly indicated on the Service Health Dashboard. We still have the option of rolling back in the event of a disaster, but if that doesn’t happen then we will be able to save a very large amount of money over the next twelve months and beyond as a result of this migration.

I’d definitely recommend Amazon Web Services as an option to other companies in the same situation. If our experiences with them continue to be positive, we may also consider using some of their other cloud services in the future. Should we wish to lower the latency when delivering media then we can use CloudFront, which is their content delivery system which integrates nicely with S3. We might also want to utilise their Elastic Compute Cloud for hosting actual server instances.