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.
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.