Where the Cloud Doesn't Fit (for Picnik)

Picnik doesn't use EC2 for either our web servers or our MySQL database servers. Our web-serving layer is highly coupled to our databases, so it makes sense to keep the latency between them very low. That implies that they are either both in the cloud or both out of the cloud. Until very recently, disk I/O performance in EC2 was mediocre, so that necessitated keeping the DBs on real (and specialized) hardware. This might start to change with the introduction of Amazon's RDS, which is basically a nicely packaged version of MySQL on top of EC2.

Even though database performance might not be up to the task of a high-performance production server, I have toyed with the idea of using EC2 instances for DB slaves. These slaves would be primarily used for backups but could also be used for reports or batch jobs.

Another capability that was lacking from Amazon's cloud offering early on was load balancing. Although it is possible to have a decent amount of load balancing on an EC2 instance, you have to jump through a bunch of hoops to get any reasonable level of availability. Amazon eventually introduced a load balancer offering which eliminates many of those concerns.

The cloud landscape is changing very quickly. When we started working on Picnik, cloud offerings were sparse and untried, so we decided to run our own servers. If we were building Picnik in today's landscape, there's a reasonable chance we'd do things differently.

Get Web Operations now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.