3 Comments

Summary:

99designs’ use of Amazon services to run its crowd-sourcing site is seen as a model for how small companies can leverage cloud services. The company’s site claims to handle hundreds of thousands of unique visitors and tens of millions of pageviews monthly.

99designScreen Shot 2012-02-06 at 3.53.15 PM

99designs, which runs crowdsourcing contests for graphic design projects, drew attention with its work on the Occupy movement’s logo and controversy around its business model. But until now there hasn’t been much written about the cloud infrastructure that has expedited more than 100,000 projects in four years.

Today, a blog post on High Scalability highlighted 99designs’ architecture, calling it the sort of reliable cloud infrastructure medium-sized ecommerce companies can parlay into running big workloads.

Melbourne, Australia-based 99designs has 12 technical staffers (eight developers, two devops people and two user-experience or “ux” designers) and runs no servers of its own, preferring to use the Amazon Web Services cloud for the heavy lifting. That decision has worked out just fine, according to 99Designs’ dev op Lars Yencken. In a recent blog post, Yencken wrote:

Our site sees hundreds of thousands of unique visitors a month, generating pageviews in the tens of millions. Since we deal with graphic design, many of our pages are asset heavy — these pageviews fan out to some 40 times as many requests. Whilst there are many larger sites on the net, we thought this was enough to warrant sharing the way we do things.

99designs uses Amazon’s Elastic Load Balancer (ELB) to route work around servers evenly; the Varnish web application accelerator to speed up the jobs once they’re allocated; Amazon’s S3 and mySQL database service for main storage;  and Memcached, MongoDB and Redis services for transient data of different types.

Yencken wrote:

Memcached runs locally on every application server, with a peering arrangement between servers, and helps us reduce our database queries dramatically. We log errors and statistics to capped collections in MongoDB, providing us with more insight into our system’s performance. Redis captures per-user information about which features are enabled at any given time; it supports our development stragegy around dark launches, soft launches and incremental feature rollouts.

The company also uses RightScale to manage its servers in the Amazon cloud, a la Zynga. It also uses Rackspace’s Cloudfiles as extra backup for disaster recovery.

However, challenges remain. Yencken said the tendency is to stockpile servers for peak times, meaning the company is overprovisioning its computing resources against the very tenets of cloud computing. What it should be doing, he acknowledged, is better automating and stress-testing its infrastructure so it can bring up servers faster as needed. “This would allow us to confidently reduce capacity when we have excess, rather than simply expanding,” he wrote.

Whatever the company is doing, it seems to be working. According to its web site, 99designs has hosted 118,887 contests in four years and claims 143,224 designers in its community.

  1. Interesting architecture, in particular how they’ve split logging, user information, main storage to MongoDb, Redis, and MySQL respectively. And then there’s MemCached.

    Share
  2. Crowdsourcing in the cloud is a fantastic concept that has a wide range of practical applications. We discussed something similar recently on our blog – http://www.blog.bt.com/viewpoint/index.php/2011/05/19/microworking/

    Share
  3. 99designs use of memcached on each application server is an unusual choice, and not one we see many of our customers use (full disclosure: I am an Architect in the PS group at RightScale). A far more common configuration is a separate tier of multiple memcached servers to separate application functionality. It would be interesting to hear more detail on the peering arrangement they use, since other solutions exist for this as well (i.e. Couchbase, f/k/a Membase).

    Share

Comments have been disabled for this post